牛客上面的一道题目,题目意思要理解,下一节点,是pNode的下一节点,pNode不一点是根节点。我是用非递归方法来做的,很麻烦,各种结构要考虑清楚。推荐大佬做法;
https://blog.csdn.net/qq_43632625/article/details/108485594
import java.util.Stack;
import java.util.ArrayList;
/*
public class TreeLinkNode {
int val;
TreeLinkNode left = null;
TreeLinkNode right = null;
TreeLinkNode next = null;
TreeLinkNode(int val) {
this.val = val;
}
}
*/
public class Solution {
static ArrayList<TreeLinkNode> arr = new ArrayList<>();
public TreeLinkNode GetNext(TreeLinkNode pNode) {
TreeLinkNode p1 = pNode;
while(p1.next!=null){
p1 = p1.next;
}
inroder(p1);
int i= 0;
for(;i<arr.size();i++){
if(arr.get(i)==pNode)
break;
}
if(i==(arr.size()-1))
return null;
else
return arr.get(i+1);
}
public void inroder(TreeLinkNode p2){
if(p2!=null)
{
inroder(p2.left);
arr.add(p2);
inroder(p2.right);
}
}
}