public class node
}
該結構比普通二叉樹節點結構多了乙個指向父節點的 parent 指標。假設有一 棵 node 型別的節點組成的二叉樹,樹中每個節點的 parent 指標都正確地指向自己的父節點,頭節點的 parent 指向 null。只給乙個在二叉樹中的某個節點 node,請實現返回 node 的後繼節點的函式。
在二叉樹中,前驅結點和後繼結點是按照二叉樹中兩個結點被中序遍歷的先後順序來劃分的。
以上面的樹形結構為例,中序遍歷結果為:4 2 5 1 6 3 7,則 1 的後繼結點為 6,前驅結點為 5;
方案:
這裡按自己的理解來比較好
補充:如果求前驅結點,方案如下:
如果結點有左子樹,該結點的前驅就是左子樹的最右邊結點;
如果結點沒有左子樹,就一直往上找,直到指向的結點是其父結點的右孩子為止;
public class successornode
} public static node getsuccessornode(node node)
// 說明當前結點有右子樹,則後繼結點為右子樹的最左結點
if (node.right != null) else
//這裡也兼顧了,找不到的情況,反正找到頭,找不到parent.left == node就為空,符合事實
return parent;
} }
public static node getleftmost(node node)
//一路往左
while (node.left != null)
return node; }}
測試
public static void main(string args)
程式執行結果為:
1 next: 2
2 next: 3
3 next: 4
4 next: 5
5 next: 6
6 next: 7
7 next: 8
8 next: 9
9 next: 10
10 next: null
在二叉樹中找到乙個節點的後繼節點
在二叉樹中找到乙個節點的後繼節點 現在有一種新的二叉樹節點型別如下 public class node 該結構比普通二叉樹節點結構多了乙個指向父節點的 parent 指標。假設有一棵 node 型別的節點組 成的二叉樹,樹中每個節點的 parent 指標都正確地指向自己的父節點,頭節點的 paren...
在二叉樹中找到乙個節點的後繼節點
題目 現在有一種新的二叉樹節點型別如下 public class node 該結構比普通二叉樹節點結構多了乙個指向父節點的parent指標。假 設有一 棵node型別的節點組成的二叉樹,樹中每個節點的parent指標 都正確地指向 自己的父節點,頭節點的parent指向null。只給乙個在 二叉樹中...
在二叉樹中找到乙個節點的後繼節點
題目 現在有一種新的二叉樹節點型別如下 public class node 該結構比普通二叉樹節點結構多了乙個指向父節點的parent指標。假 設有一 棵node型別的節點組成的二叉樹,樹中每個節點的parent指標 都正確地指向 自己的父節點,頭節點的parent指向null。只給乙個在 二叉樹中...