• 二叉树的深度


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

    例如:输入二叉树:

                                                10
                                              /    
                                            6        14
                                          /         /   
                                        4         12     16

    输出该树的深度3。

    二叉树的结点定义如下:

    struct SBinaryTreeNode // a node of the binary tree
    {
          int               m_nValue; // value of node
          SBinaryTreeNode  *m_pLeft;  // left child of node
          SBinaryTreeNode  *m_pRight; // right child of node
    };

    如果一棵树只有一个结点,它的深度为1。如果根结点只有左子树而没有右子树,那么树的深度应该是其左子树的深度加1;同样如果根结点只有右子树而没有左子树,那么树的深度应该是其右子树的深度加1。如果既有右子树又有左子树呢?那该树的深度就是其左、右子树深度的较大值再加1

    上面的这个思路用递归的方法很容易实现,只需要对遍历的代码稍作修改即可。参考代码如下:

    ///////////////////////////////////////////////////////////////////////
    // Get depth of a binary tree
    // Input: pTreeNode - the head of a binary tree
    // Output: the depth of a binary tree
    ///////////////////////////////////////////////////////////////////////
    int TreeDepth(SBinaryTreeNode *pTreeNode)
    {
          // the depth of a empty tree is 0
          if(!pTreeNode)
                return 0;
    
          // the depth of left sub-tree
          int nLeft = TreeDepth(pTreeNode->m_pLeft);
          // the depth of right sub-tree
          int nRight = TreeDepth(pTreeNode->m_pRight);
    
          // depth is the binary tree
          return (nLeft > nRight) ? (nLeft + 1) : (nRight + 1);
    }
    

    来源:http://zhedahht.blog.163.com/blog/static/25411174200732975328975/

  • 相关阅读:
    Python系列:5- Day1
    Python系列:4-计算机中的进制和编码
    操作系统随笔:什么是微内核和宏内核?【华为鸿鹄操作系统-微内核】
    Python系列:3-操作系统简史
    Python系列:2-电脑结构和CPU、内存、硬盘三者之间的关系
    数据结构中头结点和头指针那么易混淆吗
    pareto最优解(多目标智能算法要用到)
    Matlab学习中遇到的不熟悉的函数(智能算法学习第一天)
    6-2
    6-1
  • 原文地址:https://www.cnblogs.com/heyonggang/p/3417760.html
Copyright © 2020-2023  润新知