解题思路
这道题是这样思考的,请回答下面我写的几个问题?
一 节点2的下一个节点是什么?
![first](https://img-blog.csdn.net/20161123135420993)
二 节点1的下一个节点是什么?
![second](https://img-blog.csdn.net/20161123135851512)
三 节点3的下一个节点是什么?(看上面的一副图)
四 节点4的下一个节点是什么?
![four](https://img-blog.csdn.net/20161123140454627)
最后的思考
(重要的是)自己如何用递归独立实现代码。
package 二叉树的下一个节点;
class TreeLinkNode {
int val;
TreeLinkNode left = null;
TreeLinkNode right = null;
TreeLinkNode next = null;
TreeLinkNode(int val) {
this.val = val;
}
}
public class Solution {
public TreeLinkNode GetNext(TreeLinkNode pNode) {
if (null == pNode) {
return pNode;
}
TreeLinkNode tmp = pNode.right;
if (tmp != null) {
while (tmp.left != null) {
tmp = tmp.left;
}
return tmp;
}
while (true) {
TreeLinkNode p = pNode.next;
if(p == null)
return null;
if (p.left == pNode) {
return p;
} else {
pNode = p;
}
}
}
public static void main(String[] args) {
new Solution().GetNext(null);
}
}