剑指offer:二叉搜索树与双向链表
2017-08-07 22:03
274 查看
题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
【运行时间:13ms 占用内存:8272k】
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;
}
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
【运行时间: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;
}
相关文章推荐
- 剑指Offer27:二叉搜索树与双向链表
- 剑指offer 面试题27 二叉搜索树与双向链表
- 【剑指offer】十八,二叉搜索树与双向链表
- 剑指Offer——二叉搜索树转换为双向链表
- [剑指Offer] 26.二叉搜索树与双向链表
- 剑指offer-26.二叉搜索树与双向链表
- 剑指offer——面试题27:二叉搜索树与双向链表
- 【剑指offer】二叉搜索树转双向链表
- 剑指Offer——二叉搜索树与双向链表
- [剑指offer]二叉搜索树与双向链表
- 剑指offer - 二叉搜索树转双向链表
- 剑指offer--二叉搜索树与双向链表 Java实现
- 剑指offer:二叉搜索树与双向链表
- 【剑指Offer面试编程题】题目1503:二叉搜索树与双向链表--九度OJ
- 剑指offer-二叉搜索树与双向链表
- 【剑指Offer面试编程题】题目1503:二叉搜索树与双向链表--九度OJ
- 剑指offer 面试题27 二叉搜索树转换为排序双向链表
- 【剑指Offer学习】【面试题27:二叉搜索树与双向链表】
- 剑指Offer:二叉搜索树与双向链表
- 剑指offer 二叉搜索树与双向链表