博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《剑指 Offer》——26、二叉搜索树与双向链表
阅读量:2343 次
发布时间:2019-05-10

本文共 1098 字,大约阅读时间需要 3 分钟。

1. 本题知识点

2. 题目描述

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

3. 解题思路

中序遍历二叉搜索树,然后用一个 ArrayList 类保存遍历的结果,最后再来修改指针。

4. 代码

public class TreeNode {
int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) {
this.val = val; }}
import java.util.ArrayList;public class Solution {
ArrayList
list = new ArrayList<>(); public TreeNode Convert(TreeNode pRootOfTree) {
if (pRootOfTree == null) {
return null; } InOrderTraverse(pRootOfTree); // 修改指针 for (int i = 0; i < list.size() - 1; i++) {
list.get(i).right = list.get(i + 1); list.get(i + 1).left = list.get(i); } return list.get(0); } // 中序遍历二叉搜索树,然后用一个 ArrayList 类保存遍历的结果 public void InOrderTraverse(TreeNode pRootOfTree) {
if (pRootOfTree.left != null) {
InOrderTraverse(pRootOfTree.left); } list.add(pRootOfTree); if (pRootOfTree.right != null) {
InOrderTraverse(pRootOfTree.right); } }}

转载地址:http://gbjvb.baihongyu.com/

你可能感兴趣的文章
UML总结(对九种图的认识和如何使用Rational Rose 画图)
查看>>
Java中使用HttpRequest获取用户真实IP地址端口
查看>>
easyUI下拉列表点击事件的使用
查看>>
js遍历map
查看>>
单例模式
查看>>
JDBC连接数据库核心代码
查看>>
java生成随机汉字
查看>>
Java反射的基本应用
查看>>
HTML5常用标签
查看>>
where 1=1影响效率以及having和where的区别
查看>>
资源链接
查看>>
注册中心Eureka页面添加用户认证
查看>>
spring源码
查看>>
上传jar包到nexus私服
查看>>
lambda和抽象类
查看>>
idea自定义文档注释模板
查看>>
Enterprise Architect 生成项目类图
查看>>
idea导出配置
查看>>
JVM学习资料收集
查看>>
Codility经典算法题之九:MissingInteger
查看>>