二叉树最大节点(入门)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树最大节点(入门)相关的知识,希望对你有一定的参考价值。

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

给出如下一棵二叉树:

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

返回值为 3 的节点。

看到这道题第一个反应就是对于二叉树来说最常用的方式就是递归,所以本题也不例外。

思路就是递归左子树,取得左面的最大值,在递归柚子树,取得右边的最大值,然后root,left,right三个节点做比较

Java:

/**
 * Definition of TreeNode:
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left, right;
 *     public TreeNode(int val) {
 *         this.val = val;
 *         this.left = this.right = null;
 *     }
 * }
 */
public class Solution {
    /*
     * @param root: the root of tree
     * @return: the max node
     */
    public TreeNode maxNode(TreeNode root) {
        if(root == null)//首先判断root节点是否为空,空就直接返回
            return null;
            
        TreeNode left = root,right = root;//将root值付给left和right,因为三点的val做比较,防止出现left或right在val比较时出现null异常(卡在这里很久)
        if(root.left != null)
            left = maxNode(root.left);//递归获取左子树最大node
        if(root.right != null)
            right = maxNode(root.right);//递归获取右子树最大node
        TreeNode temp = left.val > root.val ? left:root;先做比较左子树和root取得最大值

        return right.val > temp.val ?right:temp;//在做最大值和右子树比较
            
      //  return temp;
    }
}

 python

class Solution:
    """
    @param: root: the root of tree
    @return: the max node
    """
    def maxNode(self, root):
        if root is None:
            return None
            
        left = right = root;
        
        if root.left is not None:
            left = self.maxNode(root.left)
        if root.right is not None:
            right = self.maxNode(root.right)
        
        temp = root #因为python不支持三目运算符这里比java代码用简便的方式实现
            
        if left.val > root.val:
            temp = left
            
        if right.val > temp.val:
            temp = right
        
        return temp

 

以上是关于二叉树最大节点(入门)的主要内容,如果未能解决你的问题,请参考以下文章

⭐算法入门⭐《二叉树》简单06 —— LeetCode 222. 完全二叉树的节点个数

二叉树入门

万字总结!java语言基础知识入门

代码随想录算法训练营第16天 | ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数

二叉树--二叉树的最大深度

代码题— 二叉树的深度