在二叉樹中找到乙個節點的後繼節點

2022-09-21 14:51:11 字數 1283 閱讀 2725

題目:在二叉樹中找到乙個節點的後繼節點

《程式設計師**面試指南》第47題 p153 難度:尉★★☆

☆本題定義了一種新的二叉樹節點型別

public class node 

}

其中parent指標指向父節點

先來看普通解法,既然有parent指標,那麼就可以一直往上移動找到頭節點,再生成中序遍歷序列,然後在這個序列中找到node節點的下乙個節點

顯然,這種解法的時間複雜度額外空間複雜度都為o(n)

最優解法不必遍歷所有的節點。如果node節點與其後繼節點之間的實際距離為l,則時間複雜度為o(l)額外空間複雜度o(1)

情況1:如果node有右子樹,那麼後繼節點就是右子樹上最左邊的節點

情況2:如果node沒有右子樹,那麼先看node是不是node父節點的左孩子節點則此時node父節點就是node的後繼節點,不是繼續往上尋找node的後繼節點。

情況3:如果情況2中一直往上尋找,移動到了空節點時還是沒有發現node的後繼節點,則node根本不存在後繼節點(其為最後乙個節點)。

public node getnextnode(node node) 

if (node.right != null) else

return parent;

}}public node getleftmost(node node)

while (node.left != null)

return node;

}

在二叉樹中找到乙個節點的後繼節點

在二叉樹中找到乙個節點的後繼節點 現在有一種新的二叉樹節點型別如下 public class node 該結構比普通二叉樹節點結構多了乙個指向父節點的 parent 指標。假設有一棵 node 型別的節點組 成的二叉樹,樹中每個節點的 parent 指標都正確地指向自己的父節點,頭節點的 paren...

在二叉樹中找到乙個節點的後繼節點

題目 現在有一種新的二叉樹節點型別如下 public class node 該結構比普通二叉樹節點結構多了乙個指向父節點的parent指標。假 設有一 棵node型別的節點組成的二叉樹,樹中每個節點的parent指標 都正確地指向 自己的父節點,頭節點的parent指向null。只給乙個在 二叉樹中...

在二叉樹中找到乙個節點的後繼節點

題目 現在有一種新的二叉樹節點型別如下 public class node 該結構比普通二叉樹節點結構多了乙個指向父節點的parent指標。假 設有一 棵node型別的節點組成的二叉樹,樹中每個節點的parent指標 都正確地指向 自己的父節點,頭節點的parent指向null。只給乙個在 二叉樹中...