ツリーの次のノード(Java実装)


本題は剣指offer面接問題58
牛客網テスト住所:https://www.nowcoder.com/questionTerminal/9023a0c988684a53960365b889ceaf5e
[プログラミング問題]ツリーの次のノード
熱指数:31242時間制限:1秒空間制限:32768 K ツリーとノードの1つを指定します.シーケンスの次のノードを見つけて返します.ツリーのノードには、左右のサブノードだけでなく、親ノードへのポインタも含まれています.
Javaコード:
package go.jacob.day609;

public class Demo1 {
	public TreeLinkNode GetNext(TreeLinkNode pNode) {
		if (pNode == null)
			return null;
		TreeLinkNode tmp = null;
		//  pNode 
		if (pNode.right == null) {
			tmp = pNode;
			//  
			while (tmp.next != null && tmp == tmp.next.right)
				tmp = tmp.next;
			return tmp.next == null ? null : tmp.next;
		}
		//  , 
		tmp = pNode.right;
		while (tmp.left != null) {
			tmp = tmp.left;
		}
		return tmp;
	}

	class TreeLinkNode {
		int val;
		TreeLinkNode left = null;
		TreeLinkNode right = null;
		TreeLinkNode next = null;

		TreeLinkNode(int val) {
			this.val = val;
		}
	}
}