//判断两个二叉树是否相等
//提问如果两个二叉树的前序遍历相等,能否说明,这两个树相等?
//答案是否定的,只有这两个树的 A前序=B前序,A中序=B中序才可以。
BOOL isEqualTree(BitTree* t1, BitTree* t2) {
if (t1 == NULL && t2 == NULL)
return TRUE;
if (!t1 || !t2)//t1,t2一个空一个不空,肯定不相同
return FALSE;
if (t1->data == t2->data)
return isEqualTree(t1->left, t2->left) && isEqualTree(t1->right, t2->right);
else
return FALSE;
}
//使用二叉链表建立二叉搜索树:注意,我们目前这个树不支持相同元素
BitTree* insertIntoBinSearchTree(BitTree* root, int node) {
BitTree* newNode;
BitTree* currentNode;
BitTree* parentNode;
newNode = (BitTree*)malloc(sizeof(BitTree));
newNode->data = node;
newNode->left = NULL;
newNode->right = NULL;
if (root == NULL)
return newNode;
else {
currentNode = root;//然后我们对当前节点进行定位
//注意,传入root是根节点,我们要根据根节点,按照左小右大的逻辑找到节点位置
//首先通过while找到新节点的位置
while (currentNode != NULL) {
parentNode = currentNode;
if (currentNode->data > node) {
currentNode = currentNode->left;
}
else {
currentNode = currentNode->right;
}
}
//其次,我们将父节点和子节点做连接
if (parentNode->data > node) {
parentNode->left = newNode;
}
else {
parentNode->right = newNode;
}
}
return root;
}
判断两棵树是否相等与使用二叉链表法建立二叉搜索树
最新推荐文章于 2021-11-10 22:59:26 发布