给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1)

template<typename T>
void insert_recursive(BinaryTree<T>& tree,BinaryTreeNode<T>* root, BinaryTreeNode<T>* node)
{if(tree.root == nullptr){tree.root = node;return;}if(root == nullptr){root = tree.root;}if(node->key < root->key){if(root->left == nullptr){root->left = node;if(node!= nullptr)node->parent = root;}elseinsert_recursive(tree,root->left,node);}else{if(root->right == nullptr){root->right = node;if(node!= nullptr)node->parent = root;}elseinsert_recursive(tree,root->right,node);}
}

测试代码

void inorder_tree_walk(BinaryTreeNode<T> * node)
{if(node!= nullptr){inorder_tree_walk(node->left);std::cout<<node->key<<" ";inorder_tree_walk(node->right);}
}
 BinaryTreeNode<int>* nodes[] = {new BinaryTreeNode<int>(15),new BinaryTreeNode<int>(6),new BinaryTreeNode<int>(18),new BinaryTreeNode<int>(3),new BinaryTreeNode<int>(7),new BinaryTreeNode<int>(17),new BinaryTreeNode<int>(20),new BinaryTreeNode<int>(2),new BinaryTreeNode<int>(4),new BinaryTreeNode<int>(13),new BinaryTreeNode<int>(9),};BinaryTree<int> binaryTree;for (auto i :nodes) {insert_recursive<int>(binaryTree, nullptr,i);}inorder_tree_walk(binaryTree.root);cout<<endl;

辅助类
BinaryTree

template<typename T>
class BinaryTree{public:BinaryTreeNode<T>* root;BinaryTree(){root = nullptr;}
};

BinaryTreeNode链接地址

给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1)相关推荐

  1. 二叉树的中序遍历非递归方法(算法导论第三版12.1-3)

    二叉树的中序遍历非递归方法(算法导论第三版12.1-3) 1⃣️用栈实现 template<typename T> void inorder_tree_walk_non_recursion ...

  2. 写出TREE-MINIMUM 和TREE-MAXIMUM的递归版本(算法导论第三版12.2-2)

    写出TREE-MINIMUM 和TREE-MAXIMUM的递归版本(算法导论第三版12.2-2) template<typename T> BinaryTreeNode<T>* ...

  3. 写出TREE-PREDECESSOR的伪代码(算法导论第三版12.2-3)

    写出TREE-PREDECESSOR的伪代码(算法导论第三版12.2-3) TREE-PREDECESSOR(x)if x.left != NILreturn TREE-MAXIMUM(x.left) ...

  4. 给定一个n节点二叉树,写出一个O(n)时间的非递归的过程,将该树每个结点的关键字输出(算法导论第三版第十章10.4-5)

    给定一个n节点二叉树,写出一个O(n)时间的非递归的过程,将该树每个结点的关键字输出.要求除该树本树的存储空间外只能使用固定量的额外存储空间,且过程中不得修改该树,即使是暂时的修改也不允许. (算法导 ...

  5. 非递归遍历二叉树(算法导论第三版第十章10.4-5)

    非递归遍历二叉树(算法导论第三版第十章10.4-5) template<typename T> void TraverseBinaryTreeNonRecursive(BinaryTree ...

  6. 找出有序数组X和Y中所有元素的中位数(X,Y分别含n个元素)(算法导论第三版9.3-8)

    找出有序数组X和Y中所有元素的中位数(X,Y分别含n个元素) (算法导论第三版9.3-8) 时间复杂度O(lgn) int find_median_two_ordered_arrays(int *ar ...

  7. 找出第i个小元素(算法导论第三版9.2-4题)

    找出第i个小元素(算法导论第三版9.2-4题) 期望时间复杂度:Θ(n) 最坏情况的时间复杂度Θ(n^2) int randomized_select_based_loop(int *array,in ...

  8. 找出最大值和最小值(算法导论第三版9.1-2)

    找出最大值和最小值 (算法导论第三版9.1-2) 在最坏的情况下,比较次数下界是⌈3n/2⌉−2 void find_maximum_and_minimum_element(int *array,in ...

  9. 找出第二小元素(算法导论第三版9.1-1题)

    找出第二小元素(算法导论第三版9.1-1题) 时间复杂度Θ(n) 比较次数n+⌈lgn⌉−2次 思路:将元素每次分成2部分,第一部分和第二部分元素成对比较.最终获得最小的元素,记录那些和最小元素比较后 ...

最新文章

  1. .NET笔试题集(五)
  2. winform配置文件的简单使用(转载)
  3. J2EE从servlet开始
  4. 【直播回放】100分钟全面剖析图像分割任务,学习CV必知
  5. Hadoop集群搭建(27)
  6. 审计参数 audit_trail
  7. 省二计算机二级vb程序设计题,江苏省计算机二级考试VB程序设计复习题(分类汇总)...
  8. access2003安装包百度云_阿里云服务器安装JDK与配置环境详细步骤
  9. gram矩阵_推荐算法三视角:矩阵,图,时间线
  10. ui自动化测试测试报告_您需要了解的有关UI测试的所有信息
  11. 动态规划求解疯狂的采药问题(洛谷P1616题题解,Java语言描述)
  12. 那两个告扎克伯格抄袭的斜杠青年,后来怎么样了?
  13. 个人简历小程序前端源码
  14. 容器编排技术 -- 使用Minikube在Kubernetes中运行应用
  15. POJ 3050 Hopscotch
  16. android 日期下拉选择控件,Android 中日期控件与下拉列表的使用
  17. 安装ssd后不识别网卡_群晖E10M20-T1:你以为它是张网卡,其实它还带俩SSD
  18. 《31天成为IT服务达人》之技能篇中的磁带库
  19. java文件恢复软件,误删文件恢复-误删文件恢复大师 v1.1.0 最新版
  20. python flask web_Python Web开发之Flask

热门文章

  1. Git之submodule使用总结
  2. 看得懂的设计模式 享元模式python3 最基本(简单)实现
  3. 通过这个方法竟然可以看到声音传播的速度!?
  4. 周杰伦新歌《说好不哭》彩蛋大汇总! | 今日最佳
  5. 3秒取暖,超高颜值!冬日必备的大宇取暖器
  6. 从飞机上看下雨是这样子,太震撼了!
  7. 【干货】人人都能看懂的LSTM
  8. 内核中根据inode得到文件名_聊聊DOS操作系统中的文件系统FAT12
  9. 通达学院计算机组成原理试卷及答案,2021全国网络工程专业大学排名(5篇)
  10. 程序员吐槽_产品经理吐槽大会,程序员勿入