题目: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.给定一个二叉树,找到它的最小深度,最小深度是从根节点到最近叶节点的最短路径上的节点数。
思路:采用迭代的方法获得二叉树的最短深度。
具体代码如下:
class Solution {
public:
int run(TreeNode *root) {
if (!root)
return 0; //如果是空树,返回0
int l = run(root->left); //递归寻找最小左子树
int r = run(root->right); //递归寻找最小右子树
return (0 == l || 0 == r)?l+r+1:1+min(l,r); // 如果是斜树的话,返回的是 l+r+1
}
};
上面的代码中参数中*root传递的是地址,root是此地址的数据,if (!root)
判断的是数据是否为空,和地址没有关系。因为run(TreeNode *root)
,所以对 run()
需要传入一个指针,因此这里使用的是run(root->left)
。其中l+r+1不能加括号,加括号会报错。