您的位置:首页 > 其它

二叉树的最大节点-LintCode

2017-04-11 11:32 281 查看
描述:

在二叉树中寻找值最大的节点并返回。

样例:

给出如下一棵二叉树:
1
/   \
-5     2
/ \   /  \
0   3 -4  -5


返回值为 
3
 的节点。

思路:

1.我们建立一个节点r,用来存储遍历到当前位置时的最大节点值的节点。

2.用前序遍历遍历所有节点。判断当前节点值是否大于r的节点值,如果是,将当前节点值赋值给r,如果不是,进行下一个遍历。

这里使用的是递归,停止条件为当前节点为空。

AC代码:

class Solution {
public:
/**
* @param root the root of binary tree
* @return the max node
*/
TreeNode *r;
void SearchMax(TreeNode *root)
{
if(root==NULL)
return;
else
{
if(root->val > r->val)
r=root;
SearchMax(root->left);
SearchMax(root->right);
}

}
TreeNode* maxNode(TreeNode* root) {
// Write your code here
if(root==NULL)
return NULL;
else
{
r=root;
SearchMax(root);
return r;
}

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: