8 二叉樹的下乙個節點

2022-06-27 17:39:12 字數 890 閱讀 6460

1、題目描述:

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。

public

class

treelinknode

}

2、思路:以該二叉樹為例,中序遍歷為:

仔細觀察,可以把中序下一結點歸為幾種型別:

有右子樹,下一結點是右子樹中的最左結點,例如 b,下一結點是 h

無右子樹,且該結點是其父結點的左子樹,則下一結點是該結點的父結點,例如 h,下一結點是 e

無右子樹,且此結點是其父結點的右子樹,則我們一直沿著父結點追朔,直到找到某個結點是其父結點的左子樹,如果存在這樣的結點,那麼這個結點的父結點就是我們要找的下一結點。例如 i,下一結點是 a;例如 g,並沒有符合情況的結點,所以 g 沒有下一結點。(一直向上追溯父節點,並且要保證是從右子樹追溯上去的。)

3、**:

public

class

solution

return

pright;

}//2.

if (pnode.next != null && pnode.next.left ==pnode)

//3.

if (pnode.next != null

)

return

pnext.next;

}return

null; }

}

8 二叉樹的下乙個節點

理解關鍵 先序遍歷的意思是先遍歷左子樹,等到左子樹全部遍歷完之後才遍歷自己,然後是右子樹。include using namespace std struct binarytreenode 視覺化樹結構 void padding char ch,int n void print node struc...

8 二叉樹的下乙個節點

給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。分三種情況考慮。1 若該節點存在右子樹,則下一節點為右子樹最左邊的節點。2 該節點不存在右子樹,若該節點為父節點的左節點,則該父節點為該節點的下一節點。3 若該節點為...

8 二叉樹的下乙個節點

public static treenode getnext treenode node treenode temp node.right treenode nextnode 如果乙個節點有右子樹 if temp null nextnode temp 如果乙個節點沒有右子樹,且是它父節點的左子節點 ...