二叉排序树的建立
/************************************************************************************************************/
/**************按【实现提示】内容创建线索二叉树,完成后使用中序遍历将二叉树的内容输出。**********************/
/************************************************************************************************************/
#include <iostream>
#include <vector>
#include ""
using namespace std;
class TreeSet {
public:
void setNodeSave(TreeNode* currNode, int n) {
if (currNode->val>n)
{
if (!currNode->left)
{
TreeNode* inside = new TreeNode(n);
currNode->left = inside;
return;
}
else
setNodeSave(currNode->left, n);
}
else
{
if (!currNode->right) {
TreeNode* inside = new TreeNode(n);
currNode->right = inside;
return;
}
else
setNodeSave(currNode->right, n);
}
}
TreeNode* treeSet(vector<int> nums) {
TreeNode* root = NULL;
if (!nums.empty())root = new TreeNode(nums[0]);
for (int i = 1; i < nums.size(); i++)
{
setNodeSave(root, nums[i]);
}
return root;
}
void inorder(TreeNode* root, vector<int>& res) {
if (!root) {
return;
}
inorder(root->left, res);
res.push_back(root->val);
inorder(root->right, res);
}
std::vector<int> RecInorderTraversal(TreeNode* root)// 中序递归
{
vector<int> res;
inorder(root, res);
return res;
}
};
int main() {
TreeSet runWay;
int num;
vector<int> nums;
cout << "开始测试函数,输入-1截止:" << endl;
cin >> num;
while (num != -1) {
nums.push_back(num);
cin >> num;
}
auto root = runWay.treeSet(nums);
nums = runWay.RecInorderTraversal(root);
for (int i = 0; i < nums.size(); i++)cout << nums[i] << ' ';
return 0;
}