博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
有序输出两棵二叉查找树中的元素
阅读量:5954 次
发布时间:2019-06-19

本文共 1156 字,大约阅读时间需要 3 分钟。

此题就是把两棵二叉查找树的中序遍历过程结合在一起。

  1. struct TreeNode   
  2. {  
  3.     int val;  
  4.     TreeNode *left;  
  5.     TreeNode *right;  
  6.     TreeNode(int x) : val(x), left(NULL), right(NULL) {}  
  7. };  
  8.   
  9. void print2BSTsInSortedOrder(TreeNode *root1, TreeNode *root2)  

10. {  

  1. 11.     stack<TreeNode *> stk1, stk2;  
  2. 12.     TreeNode *p1 = root1;  
  3. 13.     while(p1)  
  4. 14.     {  
  5. 15.         stk1.push(p1);  
  6. 16.         p1 = p1->left;  //最小节点
  7. 17.     }  
  8. 18.     TreeNode *p2 = root2;  
  9. 19.     while(p2 != NULL)  
  10. 20.     {  
  11. 21.         stk2.push(p2);  
  12. 22.         p2 = p2->left;  //最小节点
  13. 23.     }  
  14. 24.     while(!stk1.empty() || !stk2.empty())  
  15. 25.     {  
  16. 26.         if(!stk1.empty())  
  17. 27.             p1 = stk1.top();  
  18. 28.         if(!stk2.empty())  
  19. 29.             p2 = stk2.top();  
  20. 30.         if(p1 == NULL || (p2 && p2->val <= p1->val))  
  21. 31.         {  
  22. 32.             printf("%d ", p2->val);  
  23. 33.             stk2.pop();  
  24. 34.               //获取p2节点的下一个节点,右节点的最左节点,加入栈中,下次从栈中弹出的就是下一个节点
  25. 35.             p2 = p2->right;  
  26. 36.             while(p2 != NULL)  
  27. 37.             {  
  28. 38.                 stk2.push(p2);  
  29. 39.                 p2 = p2->left;  
  30. 40.             }  
  31. 41.         }  
  32. 42.         else if(p2 == NULL || (p1 && p1->val <= p2->val))  
  33. 43.         {  
  34. 44.             printf("%d ", p1->val);  
  35. 45.             stk1.pop();  
  36.                  //获取p1节点的下一个节点,右节点的最左节点,加入栈中,下次从栈中弹出的就是下一个节点
  37. 46.             p1 = p1->right;  
  38. 47.             while(p1)  
  39. 48.             {  
  40. 49.                 stk1.push(p1);  
  41. 50.                 p1 = p1->left;  
  42. 51.             }  
  43. 52.         }  
  44. 53.     }  

54. }  

本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/4528507.html,如需转载请自行联系原作者

你可能感兴趣的文章
CDN与智能DNS原理和应用
查看>>
Android入门(十一)SQLite CURD
查看>>
Eclipse导入Android项目的方法(转)
查看>>
leetcode - Search in Rotated Sorted Array II
查看>>
coursera课程Text Retrieval and Search Engines之Week 2 Overview
查看>>
如何导出已有的谷歌插件,又如何把导出的插件安装到360浏览器中,又如何对插件小修小改?...
查看>>
[PWA] Enable Push Notification in your web app
查看>>
【转载】JS中bind方法与函数柯里化
查看>>
隐藏与显示铵钮
查看>>
zookeeper常用命令
查看>>
不懂圣杯布局?5种方式包教包会
查看>>
基于React跑一个简易版九宫格抽奖
查看>>
iOS 开发资源汇总 肯定有你想要的资源(Continuously updated)
查看>>
微信小程序横向(scroll x)滚动 scroll view
查看>>
如何重置 Docker 里的 gitlab root 用户密码
查看>>
电商系统设计之商品 (下)
查看>>
《Flask 入门教程》第 3 章:模板
查看>>
关于移动安全的一点总结
查看>>
mac flutter 开发环境配置 从0到1 流程
查看>>
为什么需要一个激励函数
查看>>