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

2021-09-24 22:18:55 字數 1006 閱讀 4814

【題目】 現在有一種新的二叉樹節點型別如下:

public class node

}該結構比普通二叉樹節點結構多了乙個指向父節點的parent指標。

假 設有一 棵node型別的節點組成的二叉樹,樹中每個節點的parent指標 都正確地指向 自己的父節點,頭節點的parent指向null。

只給乙個在 二叉樹中的某個節點 node,請實現返回node的後繼節點的函式。

在二 叉樹的中序遍歷的序列中, node的下乙個節點叫作node的後繼節點。

思路:1、如果node有右子樹,那麼後繼節點就是右子樹最左節點

2、如果node沒有右子樹,那麼先看node是不是node父節點的左孩子節點,如果是左孩子節點,那麼此時node的父節點就是node的後繼節點;如果是右孩子節點,就向上尋找node的後繼節點,假設向上移動到的節點標記為s,s的父節點標記為p,如果發現s是p的左孩子節點,那麼節點p就是node節點的後記節點,否則一直向上移動

3、如果在情況2一直向上尋找,都移動到空節點還是沒有發現node的後記節點,說明node根本不存在後繼節點

def getnextnode(node):

if node == none:

return node

if node.right!=none:

return getleftmost(node.right)

else:

parent = node.parent

while parent!=none and parent.left!=none:

node = parent

parent = node.parent

return parent

def getleftmost(node):

if node == none:

return node

while node.left!=none:

node = node.left

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。只給乙個在二叉樹中的某個節點 no...