zoukankan      html  css  js  c++  java
  • 剑指offer:二叉搜索树与双向链表

    1、题目描述:

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

    2、解题思路:

    (1)将左子树构造成双向链表,并返回链表头节点;

    (2)定位左子树双链表的尾节点;

    (3)如果左子树链表不为空,将当前root连缀其链尾;

    (4)将右子树构造出双向链表,并返回链表头节点;

    (5)如果右子树链表不为空,将当前root连缀其表头;

    (6)根据左子树链表是否为空,确定返回的节点。

    3、JavaScript实现:

    function Convert(root){
        if(root === null) return null;
        if(root.left === null && root.right === null) return root;
        // 将左子树构造成双链表,并返回链表头节点
        var left = Convert(root.left);
        var p = left;
        
        // 定位左子树双链表的尾节点
        while(p !== null && p.right !== null) p = p.right;
        
        // 如果左子树链表不为空,则将当前root链接到其链尾
        if(left !== null){
           p.right = root;
            root.left = p;
        };
        
        // 将右子树链表构造成双链表,并返回链表头节点    
        var right = Convert(root.right);
    // 如果右子树链表不为空,则将root缀到其表头 if(right !== null){ right.left = root; root.right = right; }; return left !== null ? left : root; };
  • 相关阅读:
    Augular JS里的各种ng-
    JS笔记1
    JQuery实战学习--在dreamweaver 8中配置Jquery自动提示
    android 设置桌面背景图片适应屏幕大小
    canvas实现进度条!
    Javascript之Prototype
    Sql Server 之 for xml (path,raw,auto,root)
    MVC 知识点学习3(linq to sql)
    MVC 知识点学习2
    MVC 知识点学习1
  • 原文地址:https://www.cnblogs.com/niconicohang/p/6648753.html
Copyright © 2011-2022 走看看