オファーは、次のノード57のバイナリツリーを受賞します

オファーは、次のノード57のバイナリツリーを受賞します

タイトル

前記ノードの指定されたバイナリツリーは、先行順走査順序とリターンの次のノードを見つけます。ツリー内のノードは、左と右の子ノードではないだけを含むことに注意してください、親ノードは、を指すポインタが含まれています。

思考

ここでは、次の名前の親ノードを指して、少し愚かな名前の隣です。

  1. ノードは、ツリーの右の子ノードを見つけるために、左、右のサブツリーを存在する場合のシーケンスは、、、右から左れます
  2. 右のサブツリーが存在しない場合
    1. 親ノードポイントの左の子ノード場合は、次の1は、親ノードです。
    2. 親ノードポイントの右の子ならば、再帰的にアップ、あなたは親ノードの左端の子ノードを見つけるまで。

コード

  public class TreeLinkNode {

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

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

  public TreeLinkNode GetNext(TreeLinkNode pNode) {
    if (pNode == null) {
      return null;
    }
    if (pNode.right != null) {
      pNode = pNode.right;
      while (pNode.left != null) {
        pNode = pNode.left;
      }
      return pNode;
    }
    while (pNode.next != null) {
      if (pNode.next.left == pNode) {
        return pNode.next;
      }
      pNode = pNode.next;
    }
    return null;
  }

おすすめ

転載: www.cnblogs.com/blogxjc/p/12425654.html