다음 구현에서 binary search tree (BST)의 문제점은 무엇입니까? 삽입 기능에서 인수로 노드 struct에 대한 포인터에 대한 포인터를 사용하는 것이 더 낫다고 들었습니다. struct node
{
int key_value;
struct node* left;
struct node* right;
};
insert(int key,
이 코드 조각을 가지고 class bst {
public node root=null;
bst() {
root=null;
}
public void insert(int data) {
insert(this.root,data);
}
private void insert(node ro,int
나는 BST를 작성하려고하는데, inorder, postorder 및 preorder를 인쇄해야합니다. 내 main() 기능에서이 트리를 만드는 방법이 확실하지 않습니다. 사물의 모습으로 struct Tree_Node
{
Tree_Node *right;
Tree_Node *left;
int info;
};
class bTr
주어진 BST에 대한 깊이의 합계 [루트의 모든 하위에 대한 개별 깊이의 합계]을 계산하는 데 어려움이 있습니다. 나는 트리에 대한 총 노드 수를 가지고 있으며 트리의 평균 깊이를 계산하려고합니다.이 깊이 합계가 필요합니다. 재귀와 나는 잘 맞지 않습니다.이 문제는 매우 어렵습니다. 가능한 경우 재귀 적 솔루션을보고 싶습니다. 참고 : 내가 만든 접근 No
저는 C에서 매우 익숙합니다. C에서 숫자와 문자열을 저장 한 다음이 예에서이를 인쇄합니다. 1 : Bread
2 : WashingUpLiquid
etc.
내가 지금까지 가지고있는 코드는 다음과 같습니다 순간 #include <stdio.h>
#include <stdlib.h>
#define LENGTH 300
struct node {
in
GLib에서 GTree를 사용하여 데이터를 저장하는 방법이 궁금합니다. g_tree_insert 루틴으로 GTree에 삽입 할 때마다 새로운 값이 이전의 값을 덮어 씁니다! GTree *tree; //init
tree = g_tree_new(g_str_equal); //"g_str_equal" is a GLib default compare func
//
C에서 생성 된 이진 검색 트리가 있습니다. 예를 들어 id> 5와 같이 모든 노드를 삭제하는 효율적인 방법을 찾을 수 없습니다. 구조를 동일하지 않기 때문에 트리를 탐색 할 때 노드를 삭제하면 재귀가 오류가 발생합니다. 도움말 스택을 사용하여 데이터를 트리에서 삭제하기 전에 보관하는 대신 어떤 방법이 있습니까?
if right[x] != NIL
then return TREE-MINIMUM(right[x])
y<-p[x]
while y!= NIL and x = right[y]
do x<-y
y<-p[y]
return y
I 수단 "[X]를 잘 = NIL 다음 트리 분을 반환하는 경우!"나는 그것을 번역 한 것을 알고 if(p->RChi
우리는 트리 높이가 logn이기 때문에 항상 (이진 검색) 트리에서 연산이 O (logn) 최악의 경우 실행 시간이 있음을 확인합니다. 알고리즘에 logn의 함수로 실행 시간이 있다고 들었는지, 예를 들어 m + nlogn과 같이 (증가 된) 트리를 포함해야한다고 결론을 내릴 수 있습니까? 편집 : 의견을 보내 주시면 divide-conquer와 binar