判断两棵二叉树是否相等
算法思想:先序遍历,递归实现。先判断根节点是否相等,然后在判断左右子树是否相等。
代码如下
1 //二叉树节点结构体 2 struct BinaryNode 3 { 4 int data; 5 BinaryNode * lc; 6 BinaryNode * rc; 7 }*BTree; 8 9 //判断二叉树是否相等的函数 10 11 bool isEqual(BTree T1,BTree T2) 12 { 13 if(T1 == NULL && T2 == NULL) 14 return true;//都为空,相等。 15 if(!T1||!T2) //由于上面的判断不成立,则T1,T2至少有一个不为空 16 return false;//一个空,一个不空,不相等 17 if(T1->data == T2->data) //如果根节点相等 18 return isEqual(T1->lc,T2->lc) && isEqual(T1->rc,T2->rc);//判断左右子树是否都相等 19 else 20 return false; 21 }
手与大脑的距离决定了理想与现实的相似度