Advertisement
Guest User

binary_tree

a guest
Jun 28th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. #include <vector>
  2. #include <algorithm>
  3.  
  4. struct TreeNode {
  5.  
  6. float value;
  7.  
  8. TreeNode *left;
  9.  
  10. TreeNode *right;
  11.  
  12. };
  13.  
  14. void add_tree(TreeNode *cur_node, TreeNode *new_node) {
  15. if (cur_node->value > new_node->value) {
  16. if (cur_node->left == NULL) {
  17. cur_node->left = new_node;
  18. return;
  19. }
  20. else {
  21. add_tree(cur_node->left, new_node);
  22. }
  23. }
  24. else {
  25. if (cur_node->right == NULL) {
  26. cur_node->right = new_node;
  27. return;
  28. }
  29. else {
  30. add_tree(cur_node->right, new_node);
  31. }
  32. }
  33. }
  34.  
  35. TreeNode *generate_tree(std::vector < float > nums) {
  36.  
  37. random_shuffle(nums.begin(), nums.end());
  38.  
  39. TreeNode *root = new TreeNode;
  40. if (nums.size() > 0) {
  41.  
  42. root->left = root->right = NULL;
  43. root->value = nums[0];
  44.  
  45. for (int i = 1; i < nums.size(); i++) {
  46.  
  47. TreeNode *new_node = new TreeNode;
  48. new_node->left = new_node->right = NULL;
  49. new_node->value = nums[i];
  50.  
  51. add_tree(root, new_node);
  52. }
  53. return root;
  54. }
  55. else {
  56. return NULL;
  57. }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement