LintCode-378.将二叉查找树转换成双链表
将二叉查找树转换成双链表
将一个二叉查找树按照中序遍历转换成双向链表。
样例
给定一个二叉查找树:
返回 1<->2<->3<->4<->5。标签
链表
code
/**
 * Definition of TreeNode:
 * class TreeNode {
 * public:
 *     int val;
 *     TreeNode *left, *right;
 *     TreeNode(int val) {
 *         this->val = val;
 *         this->left = this->right = NULL;
 *     }
 * }
 * Definition of Doubly-ListNode
 * class DoublyListNode {
 * public:
 *     int val;
 *     DoublyListNode *next, *prev;
 *     DoublyListNode(int val) {
 *         this->val = val;
           this->prev = this->next = NULL;
 *     }
 * }
 */
class Solution {
public:
    /**
     * @param root: The root of tree
     * @return: the head of doubly list node
     */
    DoublyListNode* bstToDoublyList(TreeNode* root) {
        // Write your code here
        DoublyListNode* head=NULL;
        vector<int> list;
        if(root == NULL)
            return head;
        treeToList(root, list);
        head = listToDlist(list);
        return head;
    }
    void treeToList(TreeNode *TreeRoot, vector<int> &list) {
        if(TreeRoot != NULL) {
            treeToList(TreeRoot->left, list);
            list.push_back(TreeRoot->val);
            treeToList(TreeRoot->right, list);
        }
    }
    DoublyListNode* listToDlist(vector<int> &list) {
        DoublyListNode* head=NULL,* p=NULL,* q=NULL;
        int size = list.size();
        if(0 == size)
            return head;
        head = p = q = new DoublyListNode(list[0]);
        for(int i=1; i<size; i++) {
            p->next = new DoublyListNode(list[i]);
            p->next->prev = q;
            q = p->next;
            p = p->next;
        }
        return head;
    }
};LintCode-378.将二叉查找树转换成双链表的更多相关文章
- lintcode:将二叉查找树转换成双链表
		题目 将一个二叉查找树按照中序遍历转换成双向链表 给定一个二叉查找树: 4 / \ 2 5 / \ 1 3 返回 1<->2<->3<->4<->5. ... 
- BST转换成有序链表
		把二元查找树转变成排序的双向链表(树)题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调整指针的指向. struct BSTreeNode{ int va ... 
- 双链表算法原理【Java实现】(八)
		前言 前面两节内容我们详细介绍了ArrayList,一是手写实现ArrayList数据结构,而是通过分析ArrayList源码看看内置实现,关于集合内容一如既往,本节课我们继续学习集合LinkedLi ... 
- 【LeetCode-面试算法经典-Java实现】【109-Convert Sorted List to Binary Search Tree(排序链表转换成二叉排序树)】
		[109-Convert Sorted List to Binary Search Tree(排序链表转换成二叉排序树)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 ... 
- (转)为什么HashMap中链表长度超过8会转换成红黑树
		原博地址:https://blog.csdn.net/xingfei_work/article/details/79637878 HashMap在jdk1.8之后引入了红黑树的概念,表示若桶中链表元素 ... 
- JavaScript:将key和value不带双引号的JSON字符串转换成JSON对象的方法
		遇到相关的问题,花了两天的时间来解决,深感来之不易,所以做如下的总结,希望遇到此问题的码农能更快的找到解决办法! var jsonArr= [{col:TO_CHAR(HZRQ,'YYYYMM'),t ... 
- C语言:将ss所指字符串中所有下标为奇数位上的字母转换成大写,若不是字母,则不转换。-删除指针p所指字符串中的所有空白字符(包括制表符,回车符,换行符)-在带头结点的单向链表中,查找数据域中值为ch的结点,找到后通过函数值返回该结点在链表中所处的顺序号,
		//将ss所指字符串中所有下标为奇数位上的字母转换成大写,若不是字母,则不转换. #include <stdio.h> #include <string.h> void fun ... 
- 【遍历二叉树】11把二叉树转换成前序遍历的链表【Flatten Binary Tree to Linked List】
		本质上是二叉树的root->right->left遍历. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ... 
- C和指针 第十二章 使用结构和指针 双链表和语句提炼
		双链表中每个节点包含指向当前和之后节点的指针,插入节点到双链表中需要考虑四种情况: 1.插入到链表头部 2.插入到链表尾部 3.插入到空链表中 4.插入到链表内部 #include <stdio ... 
随机推荐
- 颜色rgba、16进制、10进制互相装换
			rgba转16进制: function RGBToHex(rgb){ var regexp = /[0-9]{0,3}/g; var re = rgb.match(regexp);//利用正则表达式去 ... 
- 全文检索引擎 sphinx-coreseek中文索引
			Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索. Sphinx特别为一些 ... 
- Python2018秋招(笔者亲身经历)
			毕业即失业,苦逼的大四狗伤不起哟. 又到了一年一度的秋招了,笔者也在拉勾,智联,boss直聘注册了,投了50份简历,3个面试,然而全挂了. 笔者痛定思痛决定将自己的经历贴出,希望可以帮到要面试的同学. ... 
- HDOJ:6356-Glad You Came(线段树剪枝)
			题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356 解题心得: 现在深深的知道了算法复杂度的重要了,这个题算复杂度的时候还要把一些常数也算出来,不然 ... 
- LeetCode二叉树实现
			LeetCode二叉树实现 # 定义二叉树 class TreeNode: def __init__(self, x): self.val = x self.left = None self.righ ... 
- 笔记-jinja2语法
			笔记-jinja2语法 1. 基本语法 控制结构 {% %} 变量取值 {{ }} 注释 {# #} 2. 变量 最常用的是变量,由Flask渲染模板时传过来,比如上例中的”nam ... 
- linux signal函数遇到的问题
			1.关于signal函数的定义 signal最开始的原型是这: void (*signal(int signo, void (*func)(int)))(int);看过下面两行,了解到上面这一行是这个 ... 
- 如何去除Eclipse下的JS引入报错(类似Syntax error on token...的异常信息)
			在Eclipse下引入外部JS文件,比如Jquery.js,经常会出现如下异常信息: 去除该异常方法: 1. 去掉Eclipse的JS验证 Windws---->Preferences----& ... 
- 围绕DOM元素节点的增删改查
			HTML 文档中的所有内容都是节点: 整个文档是一个文档节点 document 每个 HTML 元素是元素节点 element HTML 元素内的文本是文本节点 每个 HTML 属性是属性节点 注释是 ... 
- 「日常训练」Maximum Multiple(HDU-6298)
			题意与分析 一开始以为是一条高深的数学题,跳过去了,后来查其他题目的代码的时候无意看到,一看emmmmmm 稍微思考一下就有了.\(1=\frac{1}{3}+\frac{1}{3}+\frac{1} ... 
 
			
		