本文共 1083 字,大约阅读时间需要 3 分钟。
题目描述:
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其中用到了STL容器类。> q; if(root == NULL) return 0; q.push(make_pair(root,1)); while(!q.empty()){ pair 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)); }}
转载地址:http://bohai.baihongyu.com/