【剑指offer】面试题36:二叉搜索树与双向链表(java)
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。
代码:
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)相关推荐
- 剑指Offer - 面试题36. 二叉搜索树与双向链表(中序循环/递归)
1. 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 特别地,我们希望可以就地完成转换操作.当转化完成以后,树中节点的左指 ...
- 剑指offer面试题36. 二叉搜索树与双向链表(中序遍历)(递归)
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 思路 详见链接 代码 #class Node: # def __ini ...
- 剑指offer面试题[27]-二叉搜索树与双向链表
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. /* struct TreeNode {int val;struct Tr ...
- 剑指Offer - 面试题33. 二叉搜索树的后序遍历序列(递归)
1. 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 参考以下这颗二叉搜索树:5/ \2 6 ...
- 剑指Offer - 面试题54. 二叉搜索树的第k大节点(二叉树循环遍历)
1. 题目 给定一棵二叉搜索树,请找出其中第k大的节点. 示例 1: 输入: root = [3,1,4,null,2], k = 13/ \1 4\2 输出: 4示例 2: 输入: root = [ ...
- 剑指offer面试题54. 二叉搜索树的第k大节点(逆中序遍历)
题目描述 给定一棵二叉搜索树,请找出其中第k大的节点. 思路 详见链接 代码 class Solution:def kthLargest(self, root:TreeNode, k:int)-> ...
- 剑指offer面试题33. 二叉搜索树的后序遍历序列(二叉树)(递归)
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 思路 详见链接 代码 class Sol ...
- 剑指offer(C++)-JZ36:二叉搜索树与双向链表(数据结构-树)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.如下图所示 数据范围:输 ...
- 剑指offer(牛客)---26.二叉搜索树与双向链表
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. /** public class TreeNode {int val = ...
- 剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列
剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列2013-11-23 03:16 题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出 ...
最新文章
- 分布式事务解决方案——柔性事务与服务模式
- Linux笔记-解决iptables配置后,本机无法访问本机,本机无法访问其他主机问题
- 小程序获取openid保存缓存吗_小程序获取openid踩坑
- 用python逆序输出字符串中的所有元素_Python中逆序输出字符串的六种方法
- 20200727每日一句
- C语言猜数字游戏代码实现
- #学习笔记#什么是Servlet?
- opencv源码下载编译
- NOD32中小企业服务器版部署方法
- 个性化的CRM具备的功能有哪些
- python jinja2_Python jinja2
- python实现时序异常检测_时序预测 01 - 异常检测 Smoothed z-score algorithm 标准化的一些实践、调参总结 -Python/pandas/numpy...
- 硬件知识:打印机十个共性故障解决方法
- 「读书笔记」第五项修炼-学习型组织的艺术与实践(一)
- k8s中Ingress安装
- 5.。。。。。。。。。。。。
- C语言入门教程学习 C语言学习包括哪些?
- Python去除PDF文件水印(PyMuPDF包)
- 这可能是最详细的 Windows Debug 详解 了
- wireshark网络安全分析工具之万文多图详解(持续更新)
热门文章
- LeetCode 1086. 前五科的均分(map + 优先队列)
- 基于sklearn的LogisticRegression鸢尾花多类分类实践
- POJ 1321 棋盘问题(回溯)
- 查看宝塔面板账号密码命令_宝塔面板升级到最新版图文教程
- access 如何使用dolby_Access/VBA/Excel-Access表及字段创建-03
- 计算机专业英语第2版郭涛翻译,计算机专业英语
- erp系统方案书_门禁系统方案书
- java郝斌_郝斌Java自学教程全集打包
- 合并数据 - 方法总结(concat、append、merge、join、combine_first)- Python代码
- 百度飞桨弯道超车了吗?!