zoukankan      html  css  js  c++  java
  • 二叉树的最大深度与最小深度

    求二叉树的最大深度与最小深度,递归算法。


    最大深度

    二叉树的最大深度是距根节点路径最长的某一树叶节点的深度。
    二叉树的深度等于二叉树的高度,也就等于根节点的高度。根节点的高度为左右子树的高度较大者+1。
    由此思想可用递归求解,其实也就是后序遍历二叉树的算法。

    //     struct TreeNode {
    //        Objects elements;
    //        TreeNode* left;
    //        TreeNode* right;
    //        TreeNode ( Objects x ) : elements(x), left(nullptr),    right(nullptr) { }
    //      }
    
    int MaxDepth ( TreeNode* root ) {
        int depth = 0;
        if ( root ) {
            int ldepth = MaxDepth ( root -> left );
            int rdepth = MaxDepth ( root -> right );
            depth = ( ldepth > rdepth ) ? ldepth + 1 : rdepth + 1;
        }
        return depth;
    }
    

    最小深度

    二叉树的最小深度,等于左右子树深度较小者+1。
    这里需要注意的问题是:求最大深度的时候,只需要比较左右子树的深度,取较大者+1就行了;但是求最小深度的时候,需要区分双子树与单子树,双子树时,深度较小者+1,单子树时(即左右子树有一颗为空时)为深度较大者+1。
    主要思想仍然是后序递归遍历。

    int MinDepth(TreeNode* root) {
        if (root == nullptr) return 0;
        int l = MinDepth(root->left);
        int r = MinDepth(root->right);
        if (l==0 || r==0) { return l+r+1; }
        return (l<r?l:r)+1;
    }
  • 相关阅读:
    day54
    day53
    CAS客户端整合(四)-- Cacti
    不重新编译安装php模块的方法
    CAS客户端整合(三) Otrs
    CAS客户端整合(二) Zabbix
    CAS客户端整合(一) Discuz!
    [Django笔记] Apache + mod-wsgi 环境部署所遇到的各种问题总结
    Baidu
    Scrapy框架初探
  • 原文地址:https://www.cnblogs.com/yyehl/p/6652931.html
Copyright © 2011-2022 走看看