二叉排序树的建立

时间:2025-02-07 08:57:32
/************************************************************************************************************/ /**************按【实现提示】内容创建线索二叉树,完成后使用中序遍历将二叉树的内容输出。**********************/ /************************************************************************************************************/ #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; }