タイトル説明
前記ノードの指定されたバイナリツリーは、先行順走査順序とリターンの次のノードを見つけます。ツリー内のノードは、左と右の子ノードではないだけを含むことに注意してください、親ノードは、を指すポインタが含まれています。
Aは考えた:Xianxiangは、ノード上で発見され、その後、前順で
パブリック クラスソリューション{ ブールフラグ= 偽。 TreeLinkNode結果 = nullを。 公共TreeLinkNode GetNextの(TreeLinkNode PNODE) { 場合(PNODE == NULL)戻り ヌル。 TreeLinkNodeヘッド = PNODE。 一方、(head.next!= NULL ){ ヘッド = head.next。 } midOrder(頭部、PNODE)。 戻り値の結果; } プライベート のボイドmidOrder(TreeLinkNodeツリー、TreeLinkNode PNODE){ 場合(!tree.left = NULL ){ midOrder(tree.left、PNODE)。 } であれば(フラグ&&結果== NULL ){//判断結果== NULL非常重要防止上层修改結果的值 結果 = 木。 リターン; } であれば(tree.val == pNode.val && tree.left == pNode.left && tree.right == pNode.right && tree.next == pNode.next){ フラグ = 真。 } であれば(tree.right!= NULL ){ midOrder(tree.right、PNODE)。 } } }
思考2:
リンク:https://www.nowcoder.com/questionTerminal/9023a0c988684a53960365b889ceaf5e
ソース:牛顧客ネットワークは
2つのカテゴリに分けることができる:1、右サブツリーを有し、その後、次のノードが右サブツリー左端点で、2、 Nは、I、L:右サブツリーない、例えば()親の左の子ノードである、2つのタイプに分けることができる )、 次に親ノードが次のノードである親ノードの右の子であり、b)は、(例えば:H、 J、K、M)現在のノードがその親の場所の左の子になるまで...彼の親の親の親ノードを探しています。何たとえばがない場合:Mは、彼がテール・ノードです。
パブリック クラスソリューション{ 公共TreeLinkNode GetNextの(TreeLinkNode PNODE) { 場合(PNODE == NULL ){ 戻り ヌル。 } であれば(pNode.right!= NULL ){ PNODE = pNode.right。 一方、(!pNode.left = NULL ){ PNODE = pNode.left。 } 戻りPNODEと、 } TreeLinkNode TEM = PNODE。 しばらく pNode.next(!=NULL ){ PNODE = pNode.next。 もし(pNode.left == TEM){ 戻りPNODE。 } TEM = PNODE。 } 戻り ヌル。 } }