二叉树的下一个结点(Java)
二叉树的下一个结点
http://www.nowcoder.com/questionTerminal/9023a0c988684a53960365b889ceaf5e
向定位根节点,然后使用中序遍历的方法将节点存入一个List中。从list中找到匹配的节点,输出List的下一个元素即可。
import java.util.ArrayList; public class Solution { ArrayList<TreeLinkNode> list = new ArrayList<>(); public TreeLinkNode GetNext(TreeLinkNode pNode) { TreeLinkNode temp = pNode; // 先定位根节点 while(temp.next != null) { temp = temp.next; } addNode(temp); for(int i=0; i<list.size(); i++) { if(list.get(i) == pNode) { if(i != list.size()-1) { return list.get(i+1); } return null; } } return null; } public void addNode(TreeLinkNode pNode) { if(pNode != null) { addNode(pNode.left); list.add(pNode); addNode(pNode.right); } } }