牛客网刷题之二叉搜索树与双向链表
来源:互联网 发布:mac版战网客户端 编辑:程序博客网 时间:2024/06/18 04:29
题目描述:
解题思路:
二叉搜索树又名排序树,特点的是如果不为空,那么左子树必定小于根节点,而右子树必定大于根节点。题目要求转换为排序的双向链表,其实就相当于中序遍历该二叉搜索树但要加入双向指针:可以使后继结点的左指针指当前结点,同时当前结点的右指针指向后继,最后使后继结点等于当前结点。
题解:
//递归法TreeNode later = null; public TreeNode Convert(TreeNode pRootOfTree) { if (pRootOfTree == null) { return null; } Convert(pRootOfTree.right); if (later == null) { later = pRootOfTree; } else { later.left = pRootOfTree; pRootOfTree.right = later; later = pRootOfTree; } Convert(pRootOfTree.left); return later; }
ac结果:
另附非递归法:
public TreeNode Convert(TreeNode pRootOfTree) { if (pRootOfTree == null) { return null; } Stack<TreeNode> s = new Stack<>(); TreeNode later = null; while(pRootOfTree != null || ! s.isEmpty()){ if(pRootOfTree != null){ s.push(pRootOfTree); pRootOfTree = pRootOfTree.right; }else{ pRootOfTree = s.pop(); if(later == null){ later = pRootOfTree; }else{ later.left = pRootOfTree; pRootOfTree.right = later; later = pRootOfTree; } pRootOfTree = pRootOfTree.left; } } return later; }
0 0
- 牛客网刷题之二叉搜索树与双向链表
- 剑指offer 之 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 网络——host绑定
- Oracle 11g学习笔记--model子句
- listen、connect、accept流程及原理
- 简化ssh框架(使用注解)
- 理解数据关联,数据绑定,数据驱动三者的区别
- 牛客网刷题之二叉搜索树与双向链表
- 虚拟机类加载机制(一)
- Java8 Stream详解
- Margin遭遇战
- android开发之Bitmap的高效加载
- Spring事务管理只对出现运行期异常进行回滚
- shell
- Hadoop环境搭建之JDK的安装
- 符号表的构造