LeetCode OJ:Minimum Depth of Binary Tree

来源:互联网 发布:js遍历多层json数据 编辑:程序博客网 时间:2024/06/04 17:51

Minimum Depth of Binary Tree

 

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.

算法思想:层序遍历,找到第一个叶子节点

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    int minDepth(TreeNode *root) {        if(!root)return 0;          queue<TreeNode *>que;        int minLen=0;          int curLev=1;          int nextLev=0;          int depth=0;        que.push(root);          while(!que.empty()){              TreeNode *cur=que.front();              que.pop();              if(cur->left==NULL&&cur->right==NULL){                return depth+1;            }            if(cur->left){que.push(cur->left);nextLev++;}              if(cur->right){que.push(cur->right);nextLev++;}              if(--curLev==0){                  curLev=nextLev;                  nextLev=0;                 depth++;            }          }      }};

递归版

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    int minDepth(TreeNode *root) {        return minDepth(root,false);    }private:    static int minDepth(const TreeNode *root,bool hasbrother){        if(!root)return hasbrother?INT_MAX:0;        return 1+min(minDepth(root->left,root->right),                minDepth(root->right,root->left));    }};


0 0