题解 | #对称的二叉树#
对称的二叉树
http://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb
争取每一题都记录。
树很容易就想到递归,针对本题,对称的二叉树,左右对称,那么左右子树高度一致,且各个结点也是对称的。那么我们不妨用递归遍历。
确定递归截止条件:
左右结点大小不一样,左右结点一个是叶子结点,另一个不是。不到截止条件,递归继续。
代码:
class Solution { private: int flag = 1; public: bool isSymmetrical(TreeNode* pRoot) { if(!pRoot) return true; if(pRoot->left && pRoot->right) recur(pRoot->left,pRoot->right); if(flag == 1) return true; return false; } void recur(TreeNode* l, TreeNode* r){ if(!l && !r) return; if(!l || !r){ flag = 0; return; } if(l->val != r->val){ flag = 0; return; } recur(l->left,r->right); recur(l->right,r->left); return; } };