剑指Offer—38—二叉树的深度
2017-08-24 20:35
190 查看
二叉树的深度 : 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
package A38二叉树的最大深度; import java.util.LinkedList; import java.util.Queue; public class Demo { public int TreeDepth(TreeNode pRoot){ if (pRoot == null){ return 0; } Queue<TreeNode> queue = new LinkedList<>(); queue.add(pRoot); int depth = 0; while (!queue.isEmpty()){ depth++; int size = queue.size(); while (size-- > 0){ TreeNode temp = queue.poll(); if (temp.left != null){ queue.add(temp.left); } if (temp.right != null){ queue.add(temp.right); } } } return depth; } }
package A38二叉树的最大深度; class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } public class Solution { public int TreeDepth(TreeNode root) { if (root == null){ return 0; } int left = TreeDepth(root.left); int right = TreeDepth(root.right); return (left > right) ? (left + 1) : (right + 1); } }
package A38二叉树的最大深度; import java.util.LinkedList; import java.util.Queue; public class Solution1 { // 层次遍历 public int TreeDepth(TreeNode pRoot){ if (pRoot == null){ return 0; } Queue<TreeNode> queue = new LinkedList<>(); queue.add(pRoot); int depth = 0; while (!queue.isEmpty()){ int len = queue.size(); depth++; while (len-- > 0) { // 把队列中的元素吐完 TreeNode top = queue.poll(); if (top.left != null) { queue.add(top.left); } if (top.right != null) { queue.add(top.right); } } } return depth; } }
相关文章推荐
- 剑指offer 38 二叉树的深度
- 剑指Offer——(38)二叉树的深度
- 剑指offer解题报告(Java版)——二叉树的深度 判断二叉树是否平衡 38
- (C++)剑指offer-38:二叉树的深度(知识迁移能力)
- 剑指Offer_38_二叉树的深度
- 剑指offer--面试题39:二叉树的深度
- 【剑指offer】二叉树的深度
- 剑指Offer:二叉树的深度(一刷)
- 剑指offer---二叉树的深度
- 剑指offer--二叉树的深度
- 剑指Offer--二叉树的深度
- [剑指offer]求二叉树的深度
- 剑指offer 39-二叉树的深度 判断二叉树是否为平衡二叉树
- 【剑指offer】二叉树深度
- 剑指Offer 39题 二叉树的深度 && 判断平衡二叉树 Java版
- 剑指Offer面试题39(Java版):二叉树的深度
- 剑指offer-二叉树的深度
- 剑指offer—二叉树的深度
- 剑指Offer面试题55:二叉树的深度
- 【剑指offer-Java版】39二叉树的深度