找到二叉樹的後繼節點(或前驅節點)

2021-10-04 12:54:14 字數 1387 閱讀 2762

找到二叉樹的前驅節點

在二叉樹的中序遍歷中,乙個節點的後繼結點就是他的下乙個節點

想要找到任意乙個節點的後繼結點,二叉樹的節點型別node需要包含父節點的資訊

//節點

struct node

};

#include

#include

//節點

struct node };

void

insert_tree

(node*

&root,

int value)

;void

insert

(node*

&root, node*

&next,

int value)

if(value < root->value)

else

if(value > root->value)

}//向二叉樹插入元素

void

insert_tree

(node*

&root,

int value)

else

if(value > root->value)

}//生成二叉樹

void

create_tree

(node* root,

int root_value,

int size)

}//銷毀二叉樹

void

destroy_tree

(node* root)

destroy_tree

(root->left)

;destroy_tree

(root->right)

; delete root;

}//找到最左側節點

node*

get_most_left

(node* node)

return node;

}//找到後繼節點

node*

get_successor

(node* node)

else

return p;

}return nullptr;

}int

main

(void

)else

destroy_tree

(root)

;return0;

}

//找到後繼節點

node*

get_successor

(node* node)

else

return p;

}return nullptr;

}

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

在二叉樹中找到乙個節點的後繼節點 針對於中序遍歷而言 求乙個節點的後續節點 乙個節點有右子樹,則該節點的後繼節點為其右子樹最左的節點,返回該左節點 當乙個節點沒有右子樹,通過改節點的父指標找到parent,若該節點的父指標有右孩子,就繼續往上,一直到某個節點是他父節點的左孩子停止,返回改父節點。pu...

快速找到二叉樹的後繼節點

設計乙個演算法,給定乙個二叉樹中的節點,返回它的後繼節點。該二叉樹的節點有父節點引用。二叉樹結點的後繼一般指的是中序遍歷中,該結點的後乙個結點。如果二叉樹的節點是沒有父節點的引用的。那麼對二叉樹進行中序遍歷可以很容易拿到指定節點的後繼節點。現在二叉樹的節點擁有父節點的引用,也就是說訪問二叉樹時不需要...

學習筆記 尋找二叉樹的前驅節點和後繼節點

二叉樹前驅節點和後繼節點 乙個二叉樹中序遍歷中某個節點的前乙個節點叫該節點的前驅節點,某個節點的後乙個節點叫後繼節點 該題目中還有乙個節點指向節點的父節點 parent,規定頭節點的父親節點的指標為空。struct treenode 思路 1 尋找前驅 若該節點存在左子樹,則其前驅節點為左子樹最右邊...