- 判断一棵树是否是满二叉树:要么是一颗空树或只有根节点,要么左右子树都为满二叉树且高度相等。
int Hight(TreeNode *root){
if (root == NULL)
return 0;
return Hight(root->left) > Hight(root->right) ? Hight(root->left) + 1 : Hight(root->right) + 1;
}
bool isFullTree(TreeNode *root){
if (root == NULL)
return true;
if (root->left == NULL && root->right == NULL)
return true;
return isFullTree(root->left) && isFullTree(root->right) && Hight(root->left) == Hight(root->right);
}
bool isSimilarTree(TreeNode *t1, TreeNode *t2){
if (t1 == NULL && t2 == NULL)
return true;
if (t1 == NULL&&t2 != NULL || t1 != NULL&&t2 == NULL)
return false;
return isSimilarTree(t1->left, t2->left) && isSimilarTree(t1->right, t2->right);
}
- 判断是否是相同二叉树:不光要满足相似,对应结点的值也要相等。
bool isSameTree(TreeNode *t1, TreeNode *t2){
if (t1 == NULL && t2 == NULL)
return true;
if ((t1 == NULL&&t2 != NULL || t1 != NULL&&t2 == NULL) || (t1->val != t2->val))
return false;
return isSameTree(t1->left, t2->left) && isSameTree(t1->right, t2->right);
}