zoukankan      html  css  js  c++  java
  • 剑指Offer(Java版)第三十一题:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。 要求不能创建任何新的结点,只能调整树中结点指针的指向。

    /*
    输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。
    要求不能创建任何新的结点,只能调整树中结点指针的指向。
    */
    //概念:二叉搜索树,它或者是一棵空树,或者是具有下列性质的二叉树:
    //若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
    //若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值
    public class Class31 {

    public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
    this.val = val;
    }
    }

    TreeNode leftLast = null;
    TreeNode leftHead = null;

    public TreeNode Convert(TreeNode pRootOfTree){
    convertSubTree(pRootOfTree);
    return leftHead;
    }

    public void convertSubTree(TreeNode root){
    if(root == null){
    return;
    }
    convertSubTree(root.left);
    if(leftLast == null){
    leftLast = root;
    leftHead = root;
    }else{ // //建立双向链接
    leftLast.right = root; //左子树最后一个节的右链接指向根节点
    root.left = leftLast;//根节点的左链接指向左子树最大节点
    leftLast = root;//将左侧最大节点设为根节点,作为链表前半部分最大节点
    }
    convertSubTree(root.right);
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub

    }

    }

  • 相关阅读:
    linux 下常用命令
    Mysql 数据库几种引擎的区别比较
    java 中使用ajax调用后台方法注意事项
    C# HtmlDocument和HtmlNode的使用以及节点的模糊查询
    Visio 保存卡死解决办法
    java outterLoop跳出多重循环用法以及详解
    webapi 文件下载输出接口
    获取web.config 内的值
    xml的读取(曾删改)
    from 验证
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12511301.html
Copyright © 2011-2022 走看看