二叉树的最大节点-LintCode

来源:互联网 发布:linux求平均值 编辑:程序博客网 时间:2024/06/05 07:14

描述:

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


样例:

给出如下一棵二叉树:

     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;        }            }};


0 0
原创粉丝点击