构造数组的MaxTree
定义MaxTree
:
- 数组没有重复元素
- 是二叉树
- 每一个子树上,值最大的节点是树的根节点
思路(即构造MaxTree
的规则):
- 一个节点的父节点是,数组中左边第一个比它大的数和右边第一个比它大的数中,较小的那个。
- 如果左边和右边都没有比他大的树,那么这个数是根节点
如数组{ 3, 4, 5, 1, 2}
对应的MaxTree
是:
.
5
/ \
/ \
4 2
/ /
/ /
3 1
前序遍历如下
5
4
3
2
1
代码实现如下:
package com.lilydedbb;
import java.util.HashMap;
import java.util.Stack;
/**
* Created by dbb on 2016/12/24.
*/
public class GetMaxTree {
public static Node getMaxTree(int[] arr){
Node[] nodeArr = new Node[arr.length]