zoukankan      html  css  js  c++  java
  • 二叉搜索树转换为链表

     1 package com.algorithm;
     2 
     3 public class BstALL {
     4 //输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。
     5 //要求不能创建任何新的结点,只能调整树中结点指针的指向
     6      public TreeNode Convert(TreeNode pRootOfTree) {
     7             if(pRootOfTree == null)
     8                 return null;
     9             if(pRootOfTree.left == null && pRootOfTree.right == null)
    10                 return pRootOfTree;
    11             //1、将左子树 构造成双链表,并返回链表头结点
    12             TreeNode left = Convert(pRootOfTree.left);
    13             TreeNode p = left;
    14             //2、定位至左子树双链表最后一个节点
    15             while(p!=null && p.right != null){
    16                 p = p.right;
    17             }
    18             //3、如果左子树链表不为空,将当前root追加到左子树链表
    19             if(left != null){
    20                 p.right = pRootOfTree;
    21                 pRootOfTree.left = p;
    22             }
    23             //4、将右子树构成双链表,并返回链表头结点
    24             TreeNode right = Convert(pRootOfTree.right);
    25             //如果右子树链表不为空的话,将该链表追加到root节点之后
    26             if(right != null){
    27                 right.left = pRootOfTree;
    28                 pRootOfTree.right = right;
    29             }
    30             return left!=null?left:pRootOfTree;
    31       }
    32      public static void main(String[] args) {
    33          TreeNode root = new TreeNode(10);
    34          TreeNode rootleft = new TreeNode(6);
    35          TreeNode rootright = new TreeNode(14);
    36          root.left = rootleft;
    37          root.right = rootright;
    38          
    39          TreeNode root2 = new TreeNode(4);
    40          TreeNode root3 = new TreeNode(8);
    41          
    42          rootleft.left = root2;
    43          rootleft.right = root3;
    44          
    45          TreeNode root4 = new TreeNode(12);
    46          TreeNode root5 = new TreeNode(16);
    47          
    48          rootright.left = root4;
    49          rootright.right = root5;
    50          
    51          new BstALL().Convert(root);
    52          
    53     }
    54 }
  • 相关阅读:
    使用python执行系统命令——subprocess
    python与数据库交互的模块pymysql
    爬虫实战_爬取豆瓣图书利用csv库存储
    正则表达式_爬取中国古诗词网与豆瓣热门图书
    双文件上传详解
    三.基础部分+asp网站搭建
    二.Google黑客语法
    主动信息收集(二)
    一.搜索引擎如何使用
    记录学习——算法时间复杂度求法
  • 原文地址:https://www.cnblogs.com/fankongkong/p/6548858.html
Copyright © 2011-2022 走看看