徐州做网站xlec,小企业网站模板,网站开发对比特点,中文网页104. 二叉树的最大深度 - 力扣#xff08;LeetCode#xff09;
递归#xff0c;可以前序遍历#xff0c;也可以后序遍历
前序遍历是backtracking
下面是后序遍历的代码#xff1a;
/*** Definition for a binary tree node.* public class TreeNode {* int val;* …104. 二叉树的最大深度 - 力扣LeetCode
递归可以前序遍历也可以后序遍历
前序遍历是backtracking
下面是后序遍历的代码
/*** 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 {public int maxDepth(TreeNode root) {if (root null) return 0;int left maxDepth(root.left);int right maxDepth(root.right);return Math.max(left, right) 1; }
} 层序遍历到最后一层, 记录遍历了多少层。需要遍历到最后一层
/*** 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 {public int maxDepth(TreeNode root) {if (root null) return 0;QueueTreeNode queue new LinkedList();queue.add(root);int level 0;while (!queue.isEmpty()) {int size queue.size();level;for (int i 0; i size; i) {TreeNode cur queue.poll();if (cur.left ! null) queue.add(cur.left);if (cur.right ! null) queue.add(cur.right);}}return level;}
} 111. 二叉树的最小深度 - 力扣LeetCode
递归当一边是空的时候返回另外一边
/*** 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 {public int minDepth(TreeNode root) {if (root null) return 0;int left minDepth(root.left);int right minDepth(root.right);if (root.left null root.right ! null) {return right 1;}if (root.right null root.left ! null) {return left 1;}return Math.min(left, right) 1;}
}
迭代
当当前的node的左右孩子都为null的时候就可以返回level了
/*** 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 {public int minDepth(TreeNode root) {if (root null) return 0;QueueTreeNode queue new LinkedList();queue.add(root);int level 0;while (!queue.isEmpty()) {int size queue.size();level;for (int i 0; i size; i) {TreeNode cur queue.poll();if (cur.left null cur.right null) return level;if (cur.left ! null) queue.add(cur.left);if (cur.right ! null) queue.add(cur.right);}}return level;}
}
222. 完全二叉树的节点个数 - 力扣LeetCode
递归
/*** 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 {public int countNodes(TreeNode root) {if (root null) return 0;int left countNodes(root.left);int right countNodes(root.right);return left right 1;}
}
迭代层序遍历每取出一个nodecount 1
/*** 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 {public int countNodes(TreeNode root) {if (root null) return 0;QueueTreeNode queue new LinkedList();queue.add(root);int count 0;while (!queue.isEmpty()) {int size queue.size();level;for (int i 0; i size; i) {TreeNode cur queue.poll();count;if (cur.left ! null) queue.add(cur.left);if (cur.right ! null) queue.add(cur.right);}}return count;}
}