关注
public static Node getMaxTree(int[] arr){
Node[] nArr=new Node[arr.length];
for(int i=0;i!=arr.length;i++){
nArr[i]=new Node(arr[i]);
}
Stack<Node> stack=new Stack<Node>();
Map<Node,Node> lBigMap=new HashMap<Node,Node>();
Map<Node,Node> rBigMap=new HashMap<Node,Node>();
for(int i=0;i!=nArr.length;i++){
Node curNode=nArr[i];
while(!stack.isEmpty()&&stack.peek().value<curNode.value){
popStackSetMap(stack,lBigMap,rBigMap,curNode);
}
stack.push(curNode);
}
while(!stack.isEmpty()){
popStackSetMap(stack,lBigMap,rBigMap,null);
}
Node head =null;
for(int i=0;i!=nArr.length;i++){
Node curNode=nArr[i];
Node left=lBigMap.get(curNode);
Node right=rBigMap.get(curNode);
if(left==null&&right==null){
head=curNode;
}else if(left==null){
if(right.left==null){
right.left=curNode;
}else{
right.right=curNode;
}
}else if(right==null){
if(left.left==null){
left.left=curNode;
}else{
left.right=curNode;
}
}else{
Node parent =left.value<right.value?left:right;
if(parent.left==null){
parent.left=curNode;
}else{
parent.right=curNode;
}
}
}
return head;
}
public static void popStackSetMap(Stack<Node> stack,Map<Node,Node> lmap,Map<Node,Node> rmap,Node curNode){
Node popNode=stack.pop();
if(stack.isEmpty()){
lmap.put(popNode,null);
}else{
lmap.put(popNode, stack.peek());
}
rmap.put(popNode, curNode);
}
第4题改进版
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习没事做是福还是祸? #
4945次浏览 72人参与
# 应届生进小公司有什么影响吗 #
108223次浏览 1103人参与
# 一人说一个提前实习的好处 #
1571次浏览 22人参与
# OPPO求职进展汇总 #
755537次浏览 5390人参与
# 团建是“福利”还是是 “渡劫” #
2102次浏览 56人参与
# 你小心翼翼的闯过多大的祸? #
4731次浏览 72人参与
# 重来一次,你会对开始求职的自己说 #
1009次浏览 20人参与
# 今年形式下双非本找得到工作吗 #
265928次浏览 1541人参与
# 公司情报交流地 #
127164次浏览 1232人参与
# 实习简历求拷打 #
24966次浏览 252人参与
# 从顶到拉给所有面过的公司评分 #
144479次浏览 516人参与
# 正在实习的你,有转正机会吗? #
465879次浏览 3063人参与
# 投格力的你,拿到offer了吗? #
155104次浏览 829人参与
# 作业帮求职进展汇总 #
85615次浏览 559人参与
# 携程工作体验 #
18978次浏览 66人参与
# 哪些公司笔/面试难度大? #
7101次浏览 32人参与
# 国庆前的秋招小结 #
265999次浏览 1719人参与
# 机械人,签完三方你在忙什么? #
75491次浏览 260人参与
# 在牛客分享我的求职旅程 #
176834次浏览 2688人参与
# 那些我实习了才知道的事 #
253187次浏览 1785人参与
