zoukankan      html  css  js  c++  java
  • Leetcode:Minimus Depth of Binary Tree

    The problem description:

    Given a binary tree, find its minimum depth.

    The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.

    这个题目本身不是很难,二叉树的广搜找到最浅的那个子树。但这个题目是比较典型的再广搜的时候需要记录或者使用到当前深度信息,所以我们需要一层一层来处理,而不是

    单纯的都放在队列里面,处理完为止。处理的时候,使用了2个队列,分别保存前后两层的节点。

     1 /**
     2  * Definition for binary tree
     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 public:
    12     int minDepth(TreeNode *root) {
    13         if(root==NULL) return 0;
    14         int minDepth =1;
    15         queue<TreeNode*> outq,intq;
    16         outq.push(root);
    17         TreeNode* nd;
    18         while(!outq.empty())
    19         {
    20             nd = outq.front();
    21             outq.pop();
    22             if(nd->left==NULL && nd->right ==NULL)
    23                 return minDepth;
    24             if(nd->left!=NULL) intq.push(nd->left);
    25             if(nd->right!=NULL) intq.push(nd->right);
    26             
    27             if(outq.empty()) 
    28             {
    29                 swap(intq,outq);
    30                 minDepth++;
    31             }
    32                 
    33         }
    34         return minDepth;
    35         
    36     }
    37 };

    注意,在处理的时候要保证没有空节点(NULL)被放进去了,不然可能导致外层outq在没有被内层赋值时,就被判断为空而跳出。

  • 相关阅读:
    Unique Binary Search Trees 解答
    Unique Paths II 解答
    Unique Paths 解答
    Maximum Subarray 解答
    Climbing Stairs 解答
    House Robber II 解答
    House Robber 解答
    Valid Palindrome 解答
    Container With Most Water 解答
    Remove Duplicates from Sorted List II 解答
  • 原文地址:https://www.cnblogs.com/soyscut/p/3735848.html
Copyright © 2011-2022 走看看