• 155. 二叉树的最小深度


    描述

    给定一个二叉树,找出其最小深度。

    二叉树的最小深度为根节点到最近叶子节点的距离。

    样例

    给出一棵如下的二叉树:

        1
    
     /      
    

    2 3

          /    
    
        4      5  
    

    这个二叉树的最小深度为 2

    
    /**
     * Definition of TreeNode:
     * class TreeNode {
     * public:
     *     int val;
     *     TreeNode *left, *right;
     *     TreeNode(int val) {
     *         this->val = val;
     *         this->left = this->right = NULL;
     *     }
     * }
     */
    
    class Solution {
    public:
        /**
         * @param root: The root of binary tree
         * @return: An integer
         */
    
        //递归方式
        int minDepth(TreeNode * root) {
            if (root == NULL) return 0;
            int l = minDepth(root->left);
            int r = minDepth(root->right);
            if (root->left == NULL) return r+1;
            if (root->right== NULL) return l+1;
            return (l>r? r:l) + 1; 
        }
    
    
        //循环方式(BFS)
        int minDepth(TreeNode * root) {
            if (root == NULL ) return 0;
            int depth = 1, p = 1;
            std::deque<TreeNode*> lay;
            lay.push_front(root);
            while (!lay.empty()) {
                int q = 0;
                while (p) {
                    TreeNode* tmp = lay.back();
                    lay.pop_back();
                    --p;
                    TreeNode* l = tmp->left;
                    TreeNode* r = tmp->right;
                    if (l == NULL && r == NULL) return depth;
                    else if (l == NULL) {
                        lay.push_front(r);
                        ++q;
                    } else if (r == NULL) {
                        lay.push_front(l);
                        ++q;
                    } else {
                        lay.push_front(l);
                        lay.push_front(r);
                        q+=2;
                    }
                }
                ++depth;
                p = q;
            }
        }
    };
    
  • 相关阅读:
    136. 只出现一次的数字
    Eclipse Git Pull报 cannot open git-upload-pack错误的解决方案
    数据结构和算法1 稀疏数组
    Netty学习二 TCP粘包拆包以及Netty解决TCP粘包拆包
    Java值传递和引用传递
    Git命令教程
    Properties文件载入工具类
    有序的properties的工具类
    对象操作工具类
    反射工具类
  • 原文地址:https://www.cnblogs.com/narjaja/p/10001748.html
Copyright © 2020-2023  润新知