博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【刷算法】二叉搜索树与双向链表
阅读量:6719 次
发布时间:2019-06-25

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

题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

分析

如果是这样一棵二叉搜索树:

那么它对应的双向链表顺序为:

1 3 4 5 7 10 11 15

仔细观察发现这个序列和树的中序遍历是一样的,所以算法就好写了,先中序遍历得到一个序列,然后再按照双向链表的指针规则链接起来即可。

代码实现

/* function TreeNode(x) {    this.val = x;    this.left = null;    this.right = null;} */function Convert(r){    if(r === null)        return r;    var q = [], s = [];    var cur = r;        while(cur !== null || s.length !== 0) {        if(cur !== null){            s.push(cur);            cur = cur.left;        }else{            cur = s.pop();            q.push(cur);            cur = cur.right;        }    }        r = q.shift();    r.left = null;    r.right = null;    var tail = r;    cur = null;    while(q.length !== 0){        cur = q.shift();        tail.right = cur;        cur.left = tail;        tail = cur;    }        return r;}

转载地址:http://adjmo.baihongyu.com/

你可能感兴趣的文章
《解析几何》吕林根,徐子道第四版 习题 1.4.7,1.4.8,1.4.9
查看>>
ruby Logger日志
查看>>
【应用】浮点数四则运算器 Part3:运算模块的编写
查看>>
puppet使用 apache passsenger 作为前端 (debian)
查看>>
IDA*
查看>>
双机调试和windbg的命令
查看>>
20155229《网络对抗技术》Exp8:Web基础
查看>>
MVC中用js写入的button按钮单击事件失效问题
查看>>
POJO与javabean的区别
查看>>
数据结构与算法设计--树的镜像
查看>>
Oracle常用的性能诊断语句
查看>>
Shell命令-文件及内容处理之more、less
查看>>
实验5 数独游戏界面设计
查看>>
sencha touch2中定义store格式
查看>>
自己实现简单的AOP(一)简介
查看>>
揭秘Java Web技术内幕---Servlet
查看>>
JDK1.8--深度分析ConcurrentHashMap原理分析
查看>>
Eclipse启动的时候提示:Failed to load JavaHL Library
查看>>
php的变量引用与销毁机制
查看>>
匹配文件扩展名两种方式
查看>>