【发布时间】:2014-02-24 21:31:39
【问题描述】:
我正在尝试计算二叉树从根到叶的最长路径中的节点数。 鉴于以下代码,我有两个问题:
1) 以下列方式使用队列是否等同于树的广度优先遍历? 2)这是一种准确的方法吗?函数原型是固定的,所以如果我不能在递归调用之间传递状态(如 depth_count),我就看不到递归执行它。
函数为树 {0,2,4,1,#,3,-1,5,1,#,6,#,8} 输出 5,应该输出 4。
int maxDepth(TreeNode *root){
int depth_count=0, i;
queue<TreeNode*> ns;
TreeNode* curr;
if (root){
ns.push(root);
while (!ns.empty()){
depth_count++;
for (i=0; i < ns.size(); i++){
curr = ns.front();
if (curr->left)
ns.push(curr->left);
if (curr->right)
ns.push(curr->right);
ns.pop();
}
}//endwhile
}//endif
return depth_count;
}
【问题讨论】:
标签: tree breadth-first-search depth