描述
在二叉树中寻找值最大的节点并返回。
样例
样例1:
输入:
{1,-5,3,1,2,-4,-5}
输出: 3
说明:
这棵树如下所示:
1
/ \
-5 3
/ \ / \
1 2 -4 -5
样例 2
输入:
{10,-5,2,0,3,-4,-5}
输出: 10
说明:
这棵树如下所示:
10
/ \
-5 2
/ \ / \
0 3 -4 -5
代码
1.创建一个二叉树
class TreeNode {
public int val;
public TreeNode left, right;
public TreeNode(int val) {
this.val = val;
this.left = this.right = null;
}
}
2. 创建一个包含函数的测试类
public class MaxNode {
public static void main(String[] args) {
TreeNode treeNode1 = new TreeNode(1);
TreeNode treeNode2 = new TreeNode(-5);
TreeNode treeNode3 = new TreeNode(2);
TreeNode treeNode4 = new TreeNode(0);
TreeNode treeNode5 = new TreeNode(3);
TreeNode treeNode6 = new TreeNode(-4);
TreeNode treeNode7 = new TreeNode(-5);
treeNode1.left = treeNode2;
treeNode1.right = treeNode3;
treeNode2.left = treeNode4;
treeNode2.right = treeNode5;
treeNode3.left = treeNode6;
treeNode3.right = treeNode7;
System.out.println(maxNode(treeNode1).val);
}
public static TreeNode maxNode(TreeNode root){
ArrayList<TreeNode> result=new ArrayList<>();
result.add(root);
search(root,result);
return result.get(0);
}
public static void search(TreeNode root,ArrayList<TreeNode> result){
if (root==null){
return;
}
if (result.get(0).val<root.val){
result.set(0,root);
}
if (root.left!=null){
search(root.left,result);
}
if (root.right!=null){
search(root.right,result);
}
}
}
Accepted
输入
查看差别
{1,-5,3,1,2,-4,-5}
输出
3
期望答案
3