牛客网-二叉搜索树转换成一个排序的双向链表
来源:互联网 发布:php 电商系统 编辑:程序博客网 时间:2024/06/01 17:05
题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向.
第一种方法:
class Solution {public:void buildseq(TreeNode* pRootOfTree){if (pRootOfTree != NULL){ //各元素依次入栈buildseq(pRootOfTree->left);node.push_back(pRootOfTree);buildseq(pRootOfTree->right);}}TreeNode* Convert(TreeNode* pRootOfTree){int i;buildseq(pRootOfTree);if (node.size() == 0)head=NULL; //修改前后邻居else{head = node[0];for (i = 0; i < node.size()-1; i++){node[i]->right = node[i + 1];node[i + 1]->left = node[i];}}return head;}vector<TreeNode *>node;TreeNode * head=NULL;};这种方法思想比较简单,先中序遍历二叉树,将每个结点保存在容器里,然后对容器里面的元素进行首尾相连;
第二种方法:
class Solution {public: TreeNode* Convert(TreeNode* pRootOfTree){ if (pRootOfTree == 0) return 0; //空树① TreeNode *head = 0; if (pRootOfTree->left == 0 && pRootOfTree->right == 0)return pRootOfTree; TreeNode* lhead = 0; TreeNode* rhead = 0; if (pRootOfTree->left != 0) { lhead = Convert(pRootOfTree->left); //返回左子树的头结点④ head = lhead; while (lhead->right)lhead = lhead->right; lhead->right = pRootOfTree; //左子树进行链接,直接向右搜索 pRootOfTree->left = lhead; } else head = pRootOfTree; //⑤ if (pRootOfTree->right != 0) { //能到这里说明只有根的左子树为空,则根结点肯是这这颗树的lead rhead = Convert(pRootOfTree->right); pRootOfTree->right = rhead; rhead->left = pRootOfTree; } return head; //将子树的最左结点一直返回} //直到根结点};
这种方法在原地进行操作,无需容器,通过这种方法建立的双向链表的头结点的left指针域为空,尾节点的right指针域为空,最后要调整这两个结点的指针域才能构成完全
首尾相连的双向链表!!!
0 0
- 牛客网-二叉搜索树转换成一个排序的双向链表
- 【二叉树】将二叉搜索树转换成一个排序的双向链表
- 二叉树--将二叉搜索树转换成一个排序的双向链表
- 输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表
- 剑指offer27---将二叉搜索树转换成一个排序的双向链表
- 二叉搜索树转换成一个排序的双向链表
- 【面试题】剑指offer27--将一颗二叉搜索树转换成一个排序的双向链表
- 将二叉搜索树转换成一个排序的双向链表
- 将二叉搜索树转换成一个排序的双向链表
- day17之将二叉搜索树转换成一个排序的双向链表
- 将二叉搜索树转换成一个排序的双向链表
- 剑指offer面试题-二叉搜索树转换成一个排序的双向链表
- 将二叉搜索树转换成一个排序的双向链表
- 将二叉搜索树转换成一个排序的双向链表
- 将二叉搜索树转换成一个排序的双向链表
- 数据结构:将二叉搜索树转换成一个排序的双向链表
- 第1题:把二叉搜索树转换为一个排序的双向链表
- 将二叉搜索树转换成一个排序双向链表
- spring注解配置<mvc:annotation-driven />与<context:annotation-config />区别
- 取得yum install下载的安装包
- 数字证书原理(ssl,https)
- (一)Linux shell常见命令操作以及问题解决
- C/C++ Windows API——注册表
- 牛客网-二叉搜索树转换成一个排序的双向链表
- 特征值与特征向量
- Java多线程--线程间通信
- Fragment的生命周期
- Centos 安装lamp环境(php5.6)
- linux配置永久ip不生效解决方法
- IGraphBuilder
- js面向对象编程
- Oracle 11g学习笔记--角色