1. 101. Symmetric Tree
用递归。
1 class Solution { 2 public boolean isSymmetric(TreeNode root) { 3 if( root == null) 4 return true; 5 return symmetric(root.left, root.right); 6 } 7 8 public boolean symmetric(TreeNode p, TreeNode q){ 9 if(p == null || q == null) 10 return p == q? true:false; 11 return p.val == q.val && symmetric(p.left, q.right) && symmetric(p.right, q.left); 12 } 13 }
2. 107. Binary Tree Level Order Traversal II
list表示当前层的所有节点,nextList表示下一层的所有节点。
1 class Solution { 2 public List<List<Integer>> levelOrderBottom(TreeNode root) { 3 List<List<Integer>> res = new ArrayList(); 4 List<TreeNode> list = new ArrayList(); 5 if( root == null) 6 return res; 7 list.add(root); 8 9 while(!list.isEmpty()){ 10 List<Integer> curList = new ArrayList(); 11 List<TreeNode> nextList = new ArrayList(); 12 for(TreeNode cur: list){ //循环当前层 13 curList.add(cur.val); 14 if(cur.left != null) nextList.add(cur.left); 15 if(cur.right != null) nextList.add(cur.right); 16 } 17 list = nextList; 18 res.add(0, curList); 19 } 20 return res; 21 } 22 }