对称的二叉树

题目

https://leetcode-cn.com/problems/dui-cheng-de-er-cha-shu-lcof

解法

解题思路:

  • 对称二叉树定义: 对树中任意对称的节点L和R,一定有:
    • L.val = R.val;
    • L.left.val = R.right.val.
    • L.right.val = R.left.val
  • 根据以上规律,考虑从顶至底递归,判断每队节点是否对称,从而判断树是否为对称二叉树

算法流程:

isSymmetric(root):

  • 特例处理,根节点为空,true
  • 返回值,即recur(root.left, root.right)

recur(L, R)

  • 终止条件
    • L 和R同时越过叶节点,对称
    • 只有一个 false
    • 不等,false
  • 递推
    • 判断L.left与R.right
    • 判断L.right 与R.left
1
2
3
4
5
6
7
8
9
10
class Solution {
public boolean isSymmetric(TreeNode root) {
return root == null ? true : recur(root.left, root.right);
}
boolean recur(TreeNode L, TreeNode R) {
if(L == null && R == null) return true;
if(L == null || R == null || L.val != R.val) return false;
return recur(L.left, R.right) && recur(L.right, R.left);
}
}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×