找到二叉樹的前驅節點
在二叉樹的中序遍歷中,乙個節點的後繼結點就是他的下乙個節點
想要找到任意乙個節點的後繼結點,二叉樹的節點型別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 尋找前驅 若該節點存在左子樹,則其前驅節點為左子樹最右邊...