【题目】
给定一颗二叉树的头结点head,已知其中所有节点的值都不一样,找到含有节点最多的搜索二叉树,并返回这棵子树的头结点
package zyc.binaryTree;
/**
* 找到二叉树中的最大搜索二叉树
*/
public class P121_maxBst {
public static void main(String[] args) {
Node node = new Node(10);
node.left = new Node(4);
node.left.left = new Node(2);
node.left.right = new Node(5);
node.right = new Node(14);
node.right.left = new Node(11);
node.right.right = new Node(15);
ReturnType maxBst = getMaxBst(node);
Node bstHead = maxBst.bstHead;
System.out.println(bstHead.value + " " + maxBst.maxSize);
}
public static ReturnType getMaxBst(Node node) {
if (node == null) {
// base case, 如果子树为空,最小值为系统最大,最大值为系统最小
return new ReturnType(null, 0, Integer.MIN_VALUE, Integer.MAX_VALUE);
}
ReturnType leftData = getMaxBs