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

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

    最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

    说明: 叶子节点是指没有子节点的节点。

    可以

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 private:
    12     int ans;
    13 public:
    14     int minDepth(TreeNode* root) {
    15         ans=INT_MAX;
    16         if(!root)
    17             return 0;
    18         recursive(root,0);
    19         return ans;
    20     }
    21 
    22     void recursive(TreeNode* curNode, int curdepth){
    23         ++curdepth;
    24         if(curNode->left==nullptr && curNode->right==nullptr)
    25             ans=min(ans,curdepth);
    26         if(curNode->left!=nullptr)
    27             recursive(curNode->left,curdepth);
    28         if(curNode->right!=nullptr)
    29             recursive(curNode->right,curdepth);
    30     }
    31 };

    递归,就是dfs,在树平衡状态下效率比较高。如果用bfs在树深度比较深的时候效率更高,因为遇到第一个空节点就可以返回。

  • 相关阅读:
    HDU3371--Connect the Cities
    HDU1232--畅通工程
    HDU1102--Constructing Roads
    HDU1856--More is better
    HDU1325--Is It A Tree?
    HDU1272--小希的迷宫
    HDU1213--How Many Tables
    lnmp 实现owncloud
    lemp 编译安装 不完整版
    dns 视图
  • 原文地址:https://www.cnblogs.com/rookiez/p/13399915.html
Copyright © 2011-2022 走看看