LintCode入门练习——632. 二叉树的最大节点

论坛 期权论坛 脚本     
已经匿名di用户   2022-5-29 19:04   1027   0

给出如下一棵二叉树:

     1
   /   \
 -5     2
 / \   /  \
0   3 -4  -5 

返回值为 3 的节点。

以上是LintCode上给出的样例。

查找二叉树中的最大值必定会涉及到对二叉树的遍历。

二叉树遍历常见有三种方法:
中序遍历:

void traversal(TreeNode * root)
{
     if(root)
     {
        traversal(root->left);
        /* 对树根的操作 */
        traversal(root->right);
     }
}
前序遍历:

void traversal(TreeNode * root)
{
     if(root)
     {
         /* 对树根的操作 */
        traversal(root->left);
        traversal(root->right);
     }
}
后序遍历:

void traversal(TreeNode * root)
{
     if(root)
     {
        traversal(root->left);
        traversal(root->right);
          /* 对树根的操作 */
     }
}

了解了遍历的方法后,找出数值最大节点的办法也就非常明了了。

以下,是我查询数值最大节点的办法:

TreeNode * maxNode(TreeNode * root)
{
        static TreeNode *p = NULL;
        if(p == NULL)
        {
            p = root;
        }
        if(root)
        {
            maxNode(root->left);
            if(p->val < root->val)
            {
                p = root;
            }
            maxNode(root->right);
        }
        return p;
    }
};





分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP