leetcode hot 100 刷题笔记

226. 翻转二叉树

前序遍历即可,每层递归交换左右子节点

 1 /**
 2  * Definition for a binary tree node.
 3  * public class TreeNode {
 4  *     int val;
 5  *     TreeNode left;
 6  *     TreeNode right;
 7  *     TreeNode(int x) { val = x; }
 8  * }
 9  */
10 class Solution {
11     public TreeNode invertTree(TreeNode root) {
12         // 前序遍历反转即可
13         preorder(root);
14         return root;
15     }
16 
17     public void preorder(TreeNode node) {
18         if(node==null){
19             return;
20         }
21         TreeNode left = node.left;
22         node.left = node.right;
23         node.right = left;
24         preorder(node.left);
25         preorder(node.right);
26     }
27 }
View Code

时间复杂度O(n),空间复杂度O(1).

 

104. 二叉树的最大深度

BFS即可

 1 /**
 2  * Definition for a binary tree node.
 3  * public class TreeNode {
 4  *     int val;
 5  *     TreeNode left;
 6  *     TreeNode right;
 7  *     TreeNode() {}
 8  *     TreeNode(int val) { this.val = val; }
 9  *     TreeNode(int val, TreeNode left, TreeNode right) {
10  *         this.val = val;
11  *         this.left = left;
12  *         this.right = right;
13  *     }
14  * }
15  */
16 class Solution {
17     public int maxDepth(TreeNode root) {
18         if(root==null){
19             return 0;
20         }
21         // BFS即可
22         Queue<TreeNode> queue = new LinkedList<TreeNode>();
23         queue.add(root);
24         int count = 0;
25         while(!queue.isEmpty()){
26             Queue<TreeNode> layer = new LinkedList<TreeNode>();
27             for(TreeNode node:queue){
28                 if(node.left!=null) layer.add(node.left);
29                 if(node.right!=null) layer.add(node.right);
30             }
31             count++;
32             queue = layer;
33         }
34         return count;
35     }
36 }
View Code

时间复杂度O(n),空间复杂度O(1).

posted @ 2021-01-16 21:27  Yang_Xi  阅读(98)  评论(0编辑  收藏  举报