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

代码:

package offer;
class BineryTreeNode
{
    int val;
    BineryTreeNode left = null;
    BineryTreeNode right = null;
    BineryTreeNode(int val)
    {
        this.val = val;
    }
}
public class ti36 {
     private static BineryTreeNode pre = null; //保存当前节点的前一个节点
        private static BineryTreeNode head = null;//保存链表的头结点
        public static BineryTreeNode Convert(BineryTreeNode pRootOfTree) {
            if(pRootOfTree==null) return null;
            inOrder(pRootOfTree);
            return head;
        }
        private static void inOrder(BineryTreeNode node) {
            if (node == null) return;
            System.out.println(node.val);
            inOrder(node.left);
            node.left = pre;
            if (pre != null)  pre.right = node;
            pre = node;
            if (head == null) head = node;
            inOrder(node.right);
        }
    public static void main(String[] args)
    {
        /*BineryTreeNode a = new BineryTreeNode(10);
        BineryTreeNode b = new BineryTreeNode(6);
        BineryTreeNode c = new BineryTreeNode(14);
        BineryTreeNode d = new BineryTreeNode(4);
        BineryTreeNode e = new BineryTreeNode(8);
        BineryTreeNode f = new BineryTreeNode(12);
        BineryTreeNode g = new BineryTreeNode(16);
        a.left = b;
        a.right = c;
        b.left = d;
        b.right = e;
        c.left = f;
        c.right = g;*/
        BineryTreeNode a = new BineryTreeNode(4);
        BineryTreeNode b = new BineryTreeNode(2);
        BineryTreeNode c = new BineryTreeNode(5);
        BineryTreeNode d = new BineryTreeNode(1);
        BineryTreeNode e = new BineryTreeNode(3);
        a.left = b;
        a.right = c;
        b.left = d;
        b.right = e;
        BineryTreeNode result = Convert(a);
    }
}

【剑指offer】面试题36:二叉搜索树与双向链表(java)相关推荐

  1. 剑指Offer - 面试题36. 二叉搜索树与双向链表(中序循环/递归)

    1. 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 特别地,我们希望可以就地完成转换操作.当转化完成以后,树中节点的左指 ...

  2. 剑指offer面试题36. 二叉搜索树与双向链表(中序遍历)(递归)

    题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 思路 详见链接 代码 #class Node: # def __ini ...

  3. 剑指offer面试题[27]-二叉搜索树与双向链表

    题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. /* struct TreeNode {int val;struct Tr ...

  4. 剑指Offer - 面试题33. 二叉搜索树的后序遍历序列(递归)

    1. 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 参考以下这颗二叉搜索树:5/ \2 6 ...

  5. 剑指Offer - 面试题54. 二叉搜索树的第k大节点(二叉树循环遍历)

    1. 题目 给定一棵二叉搜索树,请找出其中第k大的节点. 示例 1: 输入: root = [3,1,4,null,2], k = 13/ \1 4\2 输出: 4示例 2: 输入: root = [ ...

  6. 剑指offer面试题54. 二叉搜索树的第k大节点(逆中序遍历)

    题目描述 给定一棵二叉搜索树,请找出其中第k大的节点. 思路 详见链接 代码 class Solution:def kthLargest(self, root:TreeNode, k:int)-> ...

  7. 剑指offer面试题33. 二叉搜索树的后序遍历序列(二叉树)(递归)

    题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 思路 详见链接 代码 class Sol ...

  8. 剑指offer(C++)-JZ36:二叉搜索树与双向链表(数据结构-树)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.如下图所示 数据范围:输 ...

  9. 剑指offer(牛客)---26.二叉搜索树与双向链表

    题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. /** public class TreeNode {int val = ...

  10. 剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列

    剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列2013-11-23 03:16 题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出 ...

最新文章

  1. 分布式事务解决方案——柔性事务与服务模式
  2. Linux笔记-解决iptables配置后,本机无法访问本机,本机无法访问其他主机问题
  3. 小程序获取openid保存缓存吗_小程序获取openid踩坑
  4. 用python逆序输出字符串中的所有元素_Python中逆序输出字符串的六种方法
  5. 20200727每日一句
  6. C语言猜数字游戏代码实现
  7. #学习笔记#什么是Servlet?
  8. opencv源码下载编译
  9. NOD32中小企业服务器版部署方法
  10. 个性化的CRM具备的功能有哪些
  11. python jinja2_Python jinja2
  12. python实现时序异常检测_时序预测 01 - 异常检测 Smoothed z-score algorithm 标准化的一些实践、调参总结 -Python/pandas/numpy...
  13. 硬件知识:打印机十个共性故障解决方法
  14. 「读书笔记」第五项修炼-学习型组织的艺术与实践(一)
  15. k8s中Ingress安装
  16. 5.。。。。。。。。。。。。
  17. C语言入门教程学习 C语言学习包括哪些?
  18. Python去除PDF文件水印(PyMuPDF包)
  19. 这可能是最详细的 Windows Debug 详解 了
  20. wireshark网络安全分析工具之万文多图详解(持续更新)

热门文章

  1. LeetCode 1086. 前五科的均分(map + 优先队列)
  2. 基于sklearn的LogisticRegression鸢尾花多类分类实践
  3. POJ 1321 棋盘问题(回溯)
  4. 查看宝塔面板账号密码命令_宝塔面板升级到最新版图文教程
  5. access 如何使用dolby_Access/VBA/Excel-Access表及字段创建-03
  6. 计算机专业英语第2版郭涛翻译,计算机专业英语
  7. erp系统方案书_门禁系统方案书
  8. java郝斌_郝斌Java自学教程全集打包
  9. 合并数据 - 方法总结(concat、append、merge、join、combine_first)- Python代码
  10. 百度飞桨弯道超车了吗?!