zoukankan      html  css  js  c++  java
  • 剑指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

  • 相关阅读:
    Win10 ntoskrnl.exe蓝屏解决
    Log POST Data in Nginx
    MACOS关闭指定端口
    获取Skype用户IP地址
    禁止windows10带来的三大隐患问题
    各种语言一句话反弹shell
    2015阿里巴巴安全峰会PPT
    HTTPS反向代理嗅探
    利用arpspoof和urlsnarf 进行ARP嗅探
    收集的几个存在漏洞的程序
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7650067.html
Copyright © 2011-2022 走看看