题目描述

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

牛客网链接

js代码

/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
//方法一
let queue = []
function Convert(pRootOfTree)
{
// write code here
if (!pRootOfTree) return null
if (!pRootOfTree.left && !pRootOfTree.right) return pRootOfTree
ConvertHelp(pRootOfTree) let head = queue.shift()
let pre = head
let now
while (queue.length !== 0){
now = queue.shift()
now.left = pre
pre.right = now
pre = now
} head.left = null
now.right = null
return head
}
function ConvertHelp(pRootOfTree) {
if (!pRootOfTree) return
ConvertHelp(pRootOfTree.left)
queue.push(pRootOfTree)
ConvertHelp(pRootOfTree.right)
} //方法二
function Convert(pRootOfTree)
{
// write code here
if (!pRootOfTree) return null
let pre = null
ConvertHelp(pRootOfTree)
while (pRootOfTree.left) {
pRootOfTree = pRootOfTree.left
}
return pRootOfTree function ConvertHelp(cur) {
if (!cur) return
if (cur.left) pre = ConvertHelp(cur.left) cur.left = pre
if (pre) pre.right = cur
pre = cur if (cur.right) pre = ConvertHelp(cur.right)
return pre
} }

用js刷剑指offer(二叉搜索树与双向链表)的更多相关文章

  1. 用js刷剑指offer(二叉搜索树的后序遍历序列)

    题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 牛客网链接 js代码 function Verif ...

  2. 剑指offer 二叉搜索树与双向链表

    html, body { font-size: 15px; } body { font-family: Helvetica, "Hiragino Sans GB", 微软雅黑, & ...

  3. 剑指offer 二叉搜索树和双向链表

    剑指offer 牛客网 二叉搜索树和双向链表 # -*- coding: utf-8 -*- """ Created on Tue Apr 9 18:58:36 2019 ...

  4. 剑指Offer——二叉搜索树与双向链表

    题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 分析: 二叉搜索树,中序遍历就是排序的. 所以我们利用中序遍历,将前后两 ...

  5. 剑指Offer 二叉搜索树的后序遍历序列

    题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同.   思路: 后续遍历数组的尾部为根节点,前面的部分 ...

  6. 剑指Offer——二叉搜索树的第k个结点

    题目描述: 给定一颗二叉搜索树,请找出其中的第k大的结点. 例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4 分析: 二叉搜索树中序遍历就是从小到大.只 ...

  7. 剑指Offer——二叉搜索树的后序遍历序列

    题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 分析: 二叉查找树(Binary Search ...

  8. [剑指offer] 二叉搜索树的后序遍历序列 (由1个后续遍历的数组判断它是不是BST)

    ①题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. ②思路 1.后续遍历的数组里,最后一个元素是根. 2 ...

  9. [剑指Offer]36-二叉搜索树与双向链表

    链接 https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5?tpId=13&tqId=11179&tPa ...

随机推荐

  1. DevOps - DevOps精要 - 溯源

    1 - DevOps的含义 DevOps涉及领域广泛,其含义因人而异,在不同的理解和需求场景下,有着不同的实践形式. DevOps可以理解为是一个职位.一套工具集合.一组过程与方法.一种组织形式与文化 ...

  2. swift 导入第三方库

    现在的项目也是做了几个,每个都会导入几个优秀的第三方…… 这里写下导入的步骤,方便查询:::: 1.手动导入 首先要知道,是需要文件,还是框架 比如 Alamofire.SnapKit,都需要导入框架 ...

  3. tcpreplay使用介绍

    安装 brew install tcpreplay yum install tcpreplay tcpreplay 回放 tcpreplay is a tool for replaying netwo ...

  4. 方法重载overload与方法重写overwrite

    方法重载overload: 在同一个类中,出现相同的方法名,与返回值无关,参数列表不同:1参数的个数不同 2参数类型不同 在调用方法时,java虚拟机会通过参数列表来区分不同同名的方法 方法重写ove ...

  5. linux 下mongo 基础配置

    配置文件dbpath=/usr/local/mongodb/dblogpath=/usr/local/mongodb/log/mongo.logport=27017fork=truejournal=f ...

  6. qmake持续学习

    1 qmake技巧:  https://blog.csdn.net/chenjianqi0502/article/details/79092433

  7. MYSQL 八大优化方案

    1.选取最适用的字段属性 ​ MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设 ...

  8. python第二天---字符串的魔法

    # "adcbdefg" # "a" # 判断某个东西是否在里面包含 in | not in # name = "abcdefg" # # ...

  9. BBS项目架构

    数据库设计 用户表(用的是auth_user那张表,通过自定义表继承AbstractUser) phone 电话 avatar 头像 create_time 创建时间#外键 blog 一对一个人站点表 ...

  10. ALV报表——抓取工单长文

    ABAP抓取工单长文 运行效果: 代码: *&---------------------------------------------------------------------* *& ...