leetcode:Minimum Depth of Binary Tree

来源:互联网 发布:库里2016常规赛数据 编辑:程序博客网 时间:2024/06/05 10:40

题目描述:

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.(从根节点到叶节点经过的最短路径经过的节点数)

实现:

1.递归

class Solution {public:    int run(TreeNode *root) {        if(root==NULL)            return 0;        int depthl=run(root->left);        int depthr=run(root->right);                 if(depthl==0&&depthr==0)            return 1;        if(depthl==0)            depthl=INT_MAX;//没有左节点一定不是该路径        if(depthr==0)            depthr=INT_MAX;        return min(depthl,depthr)+1;    }};
2.非递归

按广度优先遍历(按层次遍历),若某一层出现了叶节点就返回其深度。

int run(TreeNode *root) {    queue<pair<TreeNode*, int>> q;    if(root == NULL) return 0;    q.push(make_pair(root,1));    while(!q.empty()){        pair<TreeNode*, int> cur = q.front();        q.pop();        if(!cur.first->left && !cur.first->right) return cur.second;        if(cur.first->left)            q.push(make_pair(cur.first->left,cur.second+1));        if(cur.first->right)            q.push(make_pair(cur.first->right,cur.second+1));    }}
其中用到了STL容器类。


0 0
原创粉丝点击