二叉树的下一个节点
二叉树的下一个结点
http://www.nowcoder.com/questionTerminal/9023a0c988684a53960365b889ceaf5e
public class Solution {
//新建linkedlist,来记录中序遍历的结果,方便查找
LinkedList<treelinknode> linkedList=new LinkedList<>();
TreeLinkNode node=null;
public TreeLinkNode GetNext(TreeLinkNode pNode)
{
//首先找到根节点,中序遍历
TreeLinkNode p=pNode;
while (p.next!=null){
p=p.next;
}
//中序遍历
InOrder(p);
for (int i=0;i<linkedList.size();i++){
//从集合中找到指定节点的的位置
boolean equals = linkedList.get(i).equals(pNode);
if(equals==true){
//如果此位置是最后的,那他的下一个节点就是空
if(i==linkedList.size()-1){
return null;
}
//是集合中除了最后一个节点的位置,那下一个索引位置i+1就是中序遍历的下一个节点的位置
node = linkedList.get(i + 1);
}
}
return node;
}
public void InOrder(TreeLinkNode node){
if(node!=null){
InOrder(node.left);
linkedList.add(node);
InOrder(node.right);
}
}</treelinknode>