Tag: 二元搜索树

如何validation二进制搜索树?

这是我为validationBST而编写的代码。 这是对的吗? 如果没有,我该怎么做? int validate(node *root) { if(root==NULL) return 1; else if(root->lchild!=NULL && (root->lchild)->data >=root->data) return 0; else if(root->rchild!=NULL && (root->rchild)->data data) return 0; validate(root->lchild); validate(root->rchild); return 1; }

C程序将一个二叉搜索树复制到另一个

所以,在这里我提出了二进制搜索树prgram,我在其中创建了2个二进制树tmp和tmp2,其中我试图将整个tmp2复制到tmp,该节点被用作用户的输入。 但我得到一些分段错误,我也不确定逻辑是否正确。 这是整个程序,请知道在t_cpy()中哪里出错了或者请为我修好.. #include #include struct node { int data; struct node *rlink; struct node *llink; }*tmp=NULL,*tmp2=NULL,*tmp3=NULL; typedef struct node NODE; NODE *create(); void inorder(NODE *); void insert(NODE *); void t_cpy(NODE *,NODE *); int main() { int n,m; do { printf(“\n1.create tree 1\n2.Insert element to tree1\n3.create tree 2\n4.Insert element to tree2\n5.Inorder tree1\n6.Inorder tree2\n7.Copy tree2 to […]

validation二叉搜索树的空间复杂性

validation二叉树是否为BST的最佳算法如下 IsValidBST(root,-infinity,infinity); bool IsValidBST(BinaryNode node, int MIN, int MAX) { if(node == null) return true; if(node.element > MIN && node.element < MAX && IsValidBST(node.left,MIN,node.element) && IsValidBST(node.right,node.element,MAX)) return true; else return false; } 这个逻辑的空间复杂度显然是O(logN) ,我假设它是递归的代价。 价值是如何达到的?

C中的通用二叉搜索树

我已经实现了二叉搜索树,但我也想让它变得通用。 代码如下: typedef struct treeNode { int data; struct treeNode *left; struct treeNode *right; } treeNode; 和function: treeNode* FindMin(treeNode *node) { if(node==NULL) { /* There is no element in the tree */ return NULL; } if(node->left) /* Go to the left sub tree to find the min element */ return FindMin(node->left); else return node; } […]