解決二叉樹的問題,經常要習慣從遞歸角度思考
左子樹/右子樹是否具備某屬性、是否屬于什么類型(和題目要求的判斷當前樹是否xxx一樣);
對左/右子樹進行什么操作(和題目要求的對當前樹的操作一樣)。
226.翻轉二叉樹
class Solution {public TreeNode invertTree(TreeNode root) {if (root == null) {return null;}TreeNode left = invertTree(root.left);TreeNode right = invertTree(root.right);root.left = right;root.right = left;return root;}
}
101.對稱二叉樹
class Solution {public boolean isSymmetric(TreeNode root) {//左節點和右節點是否相等//左節點的左子樹和右節點的右子樹是否對稱//左節點的右子樹和右節點的左子樹是否對稱return check(root.left,root.right);}public boolean check(TreeNode root1,TreeNode root2){if (root1==null && root2==null) return true;if (root1==null || root2==null) return false;if (root1.val!=root2.val) return false;return check(root1.left,root2.right) && check(root1.right,root2.left);}
}