100. 相同的树

自己做
解:同步先序遍历

/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {private boolean isSame = true;public void TravelTree(TreeNode p, TreeNode q){if(p == null && q != null || p != null && q == null || p != null && q != null && p.val != q.val){ //两棵树不同 isSame = false;return;}//相同的情况下继续往下遍历if(p != null){TravelTree(p.left, q.left); //左子树TravelTree(p.right, q.right); //右子树}}public boolean isSameTree(TreeNode p, TreeNode q) {TravelTree(p, q);return isSame;}
}

101. 对称二叉树

自己做

解:同步先序遍历
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {private boolean isSame = true;public void TravelTree(TreeNode p, TreeNode q){if(p == null && q != null || p != null && q == null || p != null && q != null && p.val != q.val){ //两棵树不同 isSame = false;return;}//相同的情况下继续往下遍历if(p != null){TravelTree(p.left, q.right); //左子树TravelTree(p.right, q.left); //右子树}}public boolean isSameTree(TreeNode p, TreeNode q) {TravelTree(p, q);return isSame;}public boolean isSymmetric(TreeNode root) {return isSameTree(root.left, root.right);}
}

102. 二叉树的层序遍历

自己做

解:先序遍历
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {List<List<Integer>> res = new ArrayList<>(); //存放结果public void preTravelTree(TreeNode root, int level){if(root == null)return;if(res.size() == level){ //表示该元素是该行开头第一个元素List<Integer> new_level = new ArrayList<>(); //创建新的列表存放new_level.add(root.val);res.add(new_level); //加入结果}else{ //表示已经有了该列表List<Integer> old_level = res.get(level); //取出列表old_level.add(root.val); //添加元素}preTravelTree(root.left, level + 1);preTravelTree(root.right, level + 1);}public List<List<Integer>> levelOrder(TreeNode root) {preTravelTree(root, 0);return res;}
}
