[英]List of nodes in a AVL binary search tree, ordered by their height
您可以進行任何inorder
, postorder
或preorder
遍歷,並計算每個節點的高度。 但是對於這個問題,我們不只是計算節點,而是將節點插入數據結構中,與adjacency list
非常相似,唯一的區別是position 0
linked list
存儲了所有height = 0
的節點, position 1
linked list
存儲了所有節點的height = 0
height = 1
,依此類推。
為了獲得輸出,我們可以簡單地從第一個linked list
開始打印每個鏈表的元素。
以下簡單的偽代碼可以完成這項工作:
void inorderTraversal(NodePointer ptr)
{
if(ptr == NULL)
return;
else
{
inorderTraversal(ptr->left);
if(ptr->left == NULL and ptr->right == NULL)
{
ptr->height = 0;
adjacencyList[ptr->height].append(ptr->value);
}
else
{
if(ptr->left != NULL and ptr->right == NULL)
{
ptr->height = ptr->left->height + 1;
adjacencyList[ptr->height].append(ptr->value);
}
if(ptr->right != NULL and ptr->left == NULL)
{
ptr->height = ptr->right->height + 1;
adjacencyList[ptr->height].append(ptr->value);
}
if(ptr->right != NULL and ptr->left != NULL)
{
h1 = ptr->left->height;
h2 = ptr->right->height;
ptr->height = max(h1,h2)
adjacencyList[ptr->height].append(ptr->value);
}
}
inorderTraversal(ptr->right);
}
}
現在我們可以簡單地從第一個linked list
開始遍歷所有linked lists
,並按其高度的升序獲得節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.