相同,对称二叉树递归和非递归解法
一、首先看相同二叉树(判断二叉树是否相同)
1.递归
递归解法比较简单:
1.首先判断根的情况。
2.递归判断左右子树。
代码:
bool isSameTree(TreeNode* p, TreeNode* q) {
if((p == NULL && q != NULL) || (p != NULL && q == NULL)) return false;
if(q == NULL && q == NULL) return true;
if(q->val != p->val) return false;
else {
bool tmp1 = isSameTree(p->left,q->left);
bool tmp2 = isSameTree(p->right,q->right);
if(!tmp1 || !tmp2) return false;
}
return true;
}
2.非递归
非递归的主要的思路是:用一个队列来储存两个树相同位置的结点。循环取出两个结点,检查是