剑指offer(23)-二叉搜索树与双向链表
2016-06-13 12:08
330 查看
题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。代码
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: TreeNode* Convert(TreeNode* pRootOfTree) { if(pRootOfTree == NULL) return pRootOfTree; pRootOfTree = ConvertNode(pRootOfTree); while(pRootOfTree->left) pRootOfTree = pRootOfTree->left; return pRootOfTree; } TreeNode* ConvertNode(TreeNode* root) { if(root == NULL) return root; if(root->left) { TreeNode *left = ConvertNode(root->left); while(left->right) left = left->right; left->right = root; root->left = left; } if(root->right) { TreeNode *right = ConvertNode(root->right); while(right->left) right = right->left; right->left = root; root->right = right; } return root; } };
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- C#模拟链表数据结构的实例解析
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C++利用静态成员或类模板构建链表的方法讲解
- C++实现简单的学生管理系统
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法
- Node.js环境下JavaScript实现单链表与双链表结构
- C#实现的简单链表类实例
- 找出链表倒数第n个节点元素的二个方法
- java数据结构之实现双向链表的示例
- Java数据结构之简单链表的定义与实现方法示例
- Java模拟有序链表数据结构的示例
- C++将二叉树转为双向链表及判断两个链表是否相交
- C语言单循环链表的表示与实现实例详解
- C++实现的链表类实例
- javascript数据结构之二叉搜索树实现方法
- C#创建二叉搜索树的方法