struct TNode
{
int key;
TNode* left;
TNode* right;
};
void InsertBST(TNode* &t , int key)
{
if(NULL == t)
{
t = new TNode;
t->left = t->right = NULL;
t->key = key;
return;
}
if(key < t->key)
InsertBST(t->left , key);
else
InsertBST(t->right , key );
}
//先序遍历树并插入建立排序树
void PreOrder(TNode* t , TNode* & tBST)
{
if(NULL != t)
{
InsertBST(tBST , t->key);
PreOrder(t->left , tBST);
PreOrder(t->right , tBST);
}
}
//目标函数
TNode* bt2bst(TNode* root_node)
{
TNode* bstTreeRoot = NULL;
PreOrder(root_node , bstTreeRoot);
return bstTreeRoot;
}
目标函数的输入是一颗二叉树,输出返回值为排序后的二叉树。用先序遍历访问原来树的每个节点,然后插入到新的二叉排序树里!