剑指offer:二叉搜索树与双向链表
来源:互联网 发布:java审批流程 编辑:程序博客网 时间:2024/05/26 09:54
题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
【运行时间:13ms 占用内存:8272k】
方法1:递归
利用中序遍历的递归形式代码
public class Solution { TreeNode result=null; TreeNode node=null; public TreeNode Convert(TreeNode pRootOfTree) { if(pRootOfTree==null)return pRootOfTree; Convert(pRootOfTree.left); if(node==null){ result=pRootOfTree;node=pRootOfTree; }else{ node.right=pRootOfTree; pRootOfTree.left=node; node=pRootOfTree; } Convert(pRootOfTree.right); return result; }}
方法2:非递归形式
从后往前创建树,返回最后一个list节点
public TreeNode Convert(TreeNode pRootOfTree) { if(pRootOfTree==null)return pRootOfTree; TreeNode list=null; Stack<TreeNode> stack=new Stack<TreeNode>(); while(pRootOfTree!=null||!stack.isEmpty()){ if(pRootOfTree!=null){ stack.push(pRootOfTree); pRootOfTree=pRootOfTree.right; }else{ pRootOfTree=stack.pop(); if(list==null){ list=pRootOfTree; }else{ list.left=pRootOfTree; pRootOfTree.right=list; list=pRootOfTree; } pRootOfTree=pRootOfTree.left; } } return list; }
阅读全文
0 0
- 剑指Offer二叉搜索树与双向链表
- 【剑指offer:】Q27:二叉搜索树与双向链表
- 剑指offer--二叉搜索树与双向链表
- 剑指offer 27 - 二叉搜索树与双向链表
- 剑指offer-二叉搜索树与双向链表
- 《剑指offer》二叉搜索树与双向链表
- 【剑指Offer】二叉搜索树与双向链表
- 剑指offer—二叉搜索树与双向链表
- 剑指offer:二叉搜索树与双向链表
- 剑指offer-二叉搜索树与双向链表
- 剑指Offer--027-二叉搜索树与双向链表
- 剑指offer:二叉搜索树与双向链表
- [剑指offer]二叉搜索树与双向链表
- 《剑指offer》-二叉搜索树与双向链表
- 剑指offer-27二叉搜索树与双向链表
- 剑指offer题解 二叉搜索树与双向链表
- 剑指offer|二叉搜索树与双向链表
- 【剑指offer】二叉搜索树与双向链表
- ubuntu下安装配置QT
- React Native仿美团下拉菜单
- 学习UBOOT前奏之hardware-sdram[s3c2440]
- java 获取文件路径
- 3594: [Scoi2014]方伯伯的玉米田
- 剑指offer:二叉搜索树与双向链表
- css实现一行居中显示,两行靠左显示
- String 之 substring 提取字符串
- Java_6运算符
- 大数据时代
- Linux SPI总线和设备驱动架构之一:系统概述
- Python 进程线程之间通信方式(2.1,共享数据实现进程之间通信)
- 2010-2011 ACM-ICPC Northeastern European Regional Contest (NEERC 10) G
- Nginx中的负载均衡