• 剑指offer二十六之二叉搜索树与双向链表


    一、题目

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

    二、思路

          对二叉搜索树中序遍历的结果即为排序的结果,在中序遍历的过程中,建立双向指针。详细过程见代码注释。

    三、代码

    public class Solution {
    
        TreeNode tempHead = null; //
        TreeNode realHead = null; //保存双向链表的头结点
    
        public TreeNode Convert(TreeNode pRootOfTree) {
            //如果头结点为空,返回null
            if (pRootOfTree == null) {
                return null;
            }
    
            //转换
            ConvertMethod(pRootOfTree);
    
            //返回双向链表的头结点
            return realHead;
        }
    
        //采用递归的方法进行中序遍历,遍历过程中,建立头结点和下一个节点的双向指针
        public void ConvertMethod(TreeNode pRootOfTree) {
            //递归遍历左节点
            if (pRootOfTree.left != null) {
                ConvertMethod(pRootOfTree.left);
            }
    
            //建立根节点与下一个节点的双向指针
            if(tempHead==null){    //第一次运行的时候,头结点为空,初始化头结点
                tempHead=pRootOfTree;//用于记录当前头结点
                realHead=pRootOfTree;//用于记录双向链表的头结点
            }else {  //第一次运行以后,建立tempHead节点与其下一个节点的双向指针
               //建立当前头结点与下一个节点的双向指针
                tempHead.right = pRootOfTree;
                pRootOfTree.left = tempHead;
    
                tempHead = pRootOfTree; //当前头节点后移一位
            }
    
            //递归遍历右节点
            if (pRootOfTree.right != null) {
                ConvertMethod(pRootOfTree.right);
            }
    
        }
    }
    View Code
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    
    }
    View Code

    ------------------------------------------------------

    参考链接:https://www.nowcoder.com/questionTerminal/947f6eb80d944a84850b0538bf0ec3a5

  • 相关阅读:
    scrapy.FormRequest与FormRequest.from_response 的区别
    可迭代对象和生成器
    css选择器
    xlwt写入excel时候的合并单元格
    html form提交的几种方式
    Python decorator 拦截器
    python manage.py makemigrations & migrate
    asianux4.5 环境, 本地yum源,局域网yum源的配置
    mysql基本操作
    sqlite-mysql migrate
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7650067.html
Copyright © 2020-2023  润新知