二叉樹的最大節(jié)點公式?
在二叉樹中尋找值最大的節(jié)點并返回。
給出如下一棵二叉樹:
1
/ -5 2
/ \ / 0 3 -4 -5
返回值為 3 的節(jié)點。
看到這道題第一個反應(yīng)就是對于二叉樹來說最常用的方式就是遞歸,所以本題也不例外。
思路就是遞歸左子樹,取得左面的最大值,在遞歸柚子樹,取得右邊的最大值,然后root,left,right三個節(jié)點做比較
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節(jié)點是否為空,空就直接返回
return null;
TreeNode left = root,right = root;//將root值付給left和right,因為三點的val做比較,防止出現(xiàn)left或right在val比較時出現(xiàn)null異常(卡在這里很久)
if(root.left != null)
left = maxNode(root.left);//遞歸獲取左子樹最大node
if(root.right != null)
right = maxNode(root.right);//遞歸獲取右子樹最大node
TreeNode temp = left.val > root.v