每日算法题之二叉树的深度(二叉树的深度计算公式)

  本篇文章为你整理了每日算法题之二叉树的深度(二叉树的深度计算公式)的详细内容,包含有二叉树的深度如何计算 二叉树的深度计算公式 二叉树的深度计算 二叉树深度范围 每日算法题之二叉树的深度,希望能帮助你了解 每日算法题之二叉树的深度。

  输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视为 1 。

  方法1 递归

  

最大深度是所有叶子节点的深度的最大值,深度是指树的根节点到任一叶子节点路径上节点的数量,因此从根节点每次往下一层深度就会加1。因此二叉树的深度就等于根节点这个1层加上左子树和右子树深度的最大值。而每个子树我们都可以看成一个根节点,继续用上述方法求的深度,于是我们可以对这个问题划为子问题,利用递归来解决:

 

   终止条件: 当进入叶子节点后,再进入子节点,即为空,没有深度可言,返回0.

   返回值: 每一级按照上述公式,返回两边子树深度的最大值加上本级的深度,即加1.

  

 

  

if(root == null) {

 

   return 0;

   } else {

   return Math.max(TreeDepth(root.left), TreeDepth(root.right)) +1;

  

 

  方法2 层次遍历

  

必须是一层一层的,那一层就是一个深度,有的层可能会很多节点,有的层如根节点或者最远的叶子节点,只有一个节点,但是不管多少个节点,它们都是一层。因此我们可以使用层次遍历,二叉树的层次遍历就是从上到下按层遍历,每层从左到右,我们只要每层统计层数即是深度。

 

  

 

  

package esay.JZ55二叉树的深度;

 

  import java.util.LinkedList;

  import java.util.Queue;

  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) {

   //方法1

   /*if(root == null) {

   return 0;

   } else {

   return Math.max(TreeDepth(root.left), TreeDepth(root.right)) +1;

   if (root == null) return 0;

   Queue TreeNode queue = new LinkedList ();

   queue.add(root);

   int res = 0;

   while (!queue.isEmpty()) {

   int size = queue.size();

   for (int i = 0; i size; i++) {

   TreeNode node = queue.poll();

   if (node.left != null) {

   queue.add(node.left);

   if (node.right != null) {

   queue.add(node.right);

   res++;

   return res;

  

 

  以上就是每日算法题之二叉树的深度(二叉树的深度计算公式)的详细内容,想要了解更多 每日算法题之二叉树的深度的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: