0
以下是將二叉搜索樹的前序遍歷轉換爲原始樹的代碼。構建二叉搜索樹從預遍歷迭代(不遞歸)
以下代碼需要一個整數數組,它表示二叉搜索樹的預遍歷。結構樹的根被返回。
struct Node* constructTree(int pre[], int size)
{
stack<struct Node* > s;
int i;
struct Node* root=newNode(pre[0]);
struct Node* temp;
struct Node* top_node;
s.push(root);
for(i=1;i<size;i++)
{
temp=NULL;
while(!s.empty()&&pre[i]>(s.top()->data))
{
temp=s.top();
s.pop();
}
if(temp==NULL)
{
top_node=s.top();
top_node->left=newNode(pre[i]);
s.push(top_node->left);
}else
{
temp->right=newNode(pre[i]);
s.push(temp->right);
}
}
return root;
}
來源:http://www.geeksforgeeks.org/construct-bst-from-given-preorder-traversal-set-2/
我聽不太懂這個代碼。任何人可以幫助我瞭解以下內容:
在任何給定的迭代,被指向存儲在堆棧中,相對於當前值什麼樣的價值觀出由
pre[i]
是否有任何其他的迭代方法從給定的前序遍歷構造BST?
謝謝。