二叉树中序遍历成双向链表
来源:互联网 发布:淘宝钻展在哪里展示 编辑:程序博客网 时间:2024/05/17 05:50
#include <iostream>using namespace std;struct TreeNode {int value;struct TreeNode *left;struct TreeNode *right;TreeNode(int x):value(x),left(NULL),right(NULL){};};class Solution{public:TreeNode* Convert(TreeNode* pRootOfTree) {TreeNode *pPreTreeNode = NULL;ConvertNode(pRootOfTree, &pPreTreeNode);//如果输入的pRootOfTree = NULL需要输入合法性检查TreeNode *pHeadNode = pPreTreeNode;while (pHeadNode != NULL && pHeadNode->left != NULL){pHeadNode = pHeadNode->left;}return pHeadNode;}void ConvertNode(TreeNode *pCurrentTreeNode, TreeNode **pPreTreeNode) {if (pCurrentTreeNode == NULL) {//输入pRootOfTree = NULL输入合法性检查return;}if (pCurrentTreeNode->left != NULL) {ConvertNode(pCurrentTreeNode->left, pPreTreeNode);}pCurrentTreeNode->left = *pPreTreeNode;if (*pPreTreeNode != NULL) {//中序遍历根节点的左子树的第一个叶子节点出现时,pPreTreeNode=NULL,如果操作(*pPreTreeNode)->right会报错(*pPreTreeNode)->right = pCurrentTreeNode;}*pPreTreeNode = pCurrentTreeNode;if (pCurrentTreeNode->right != NULL) {ConvertNode(pCurrentTreeNode->right, pPreTreeNode);}}};int main(void){TreeNode p1(10), p2(6), p3(14), p4(4), p5(8), p6(12), p7(16);p1.left = &p2;p1.right = &p3;p2.left = &p4;p2.right = &p5;p3.left = &p6;p3.right = &p7;TreeNode *Head = NULL;Solution s;Head = s.Convert(&p1);return 0;}
0 0
- 二叉树中序遍历成双向链表
- 二叉树按中序遍历顺序转换成双向链表
- 将二叉树按中序遍历转换成双向链表
- 二叉树转换成双向链表
- 二叉树转换成双向链表
- 二叉树转化成双向链表
- 二叉树转换成双向链表
- 二叉树转换成双向链表
- 二叉树转换成双向链表
- 二叉树转换成双向链表
- 根据遍历序列构建二叉树,并转换成双向链表
- 把二叉树转换成双向链表
- 二叉搜索树转换成双向链表
- 将二叉搜索树转换成双向链表
- 把搜索二叉树转换成双向链表
- 将排序二叉树转化成双向链表
- 二叉查找树转化成双向链表
- 二叉搜索树转换成双向链表
- wlst创建GridLink数据源
- Mac OS X新建文本文件,txt文件
- 辗转相除法
- 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放
- [Leetcode] Counting Bits
- 二叉树中序遍历成双向链表
- 51nod 1405 树的距离之和(树型dp)
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- java中基本数据类型的初始化默认值
- 1093. Count PAT's (25)
- 安卓入门-UI 之自定义actionbar样式
- 使用BeautifulSoup爬取github内容示例
- <boost-03>如何使用boost filesystem获取给定子文件夹的目录?how to use boost filesystem to get subfolders?
- 自动化生成 Openstack 新项目开发框架