【剑指offer】二叉搜索树与双向链表
来源:互联网 发布:mac怎么安装搜狗输入法 编辑:程序博客网 时间:2024/05/22 03:38
题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { public TreeNode Convert(TreeNode pRootOfTree) { if(pRootOfTree==null) { return null; } //记录链表的最后一个节点 TreeNode lastNodeInList = null; lastNodeInList=convertToList(pRootOfTree,lastNodeInList); //找到链表的头节点 TreeNode listHead = lastNodeInList; while(listHead!=null&&listHead.left!=null) { listHead = listHead.left; } return listHead; } public TreeNode convertToList(TreeNode root,TreeNode lastNodeInList) { if(root==null) { return null; } //中序遍历,所以先处理左子树,再处理当前节点,最后处理右子树 //记录当前节点 TreeNode current = root; //递归处理左子树 if(current.left!=null) { lastNodeInList = convertToList(root.left,lastNodeInList); } //处理当前节点 //当前节点的左指针指向已经转换成链表的部分的最后一个节点 current.left = lastNodeInList; //已经转换好成链表的部分的最后一个节点的右指针指向当前节点 if(lastNodeInList!=null) { lastNodeInList.right = current; } //更新链表的最后一个节点 lastNodeInList = current; //递归处理右子树 if(current.right!=null) { lastNodeInList = convertToList(root.right,lastNodeInList); } return lastNodeInList; }}
0 0
- 剑指Offer二叉搜索树与双向链表
- 【剑指offer:】Q27:二叉搜索树与双向链表
- 剑指offer--二叉搜索树与双向链表
- 剑指offer 27 - 二叉搜索树与双向链表
- 剑指offer-二叉搜索树与双向链表
- 《剑指offer》二叉搜索树与双向链表
- 【剑指Offer】二叉搜索树与双向链表
- 剑指offer—二叉搜索树与双向链表
- 剑指offer:二叉搜索树与双向链表
- 剑指offer-二叉搜索树与双向链表
- 剑指Offer--027-二叉搜索树与双向链表
- 剑指offer:二叉搜索树与双向链表
- [剑指offer]二叉搜索树与双向链表
- 《剑指offer》-二叉搜索树与双向链表
- 剑指offer-27二叉搜索树与双向链表
- 剑指offer题解 二叉搜索树与双向链表
- 剑指offer|二叉搜索树与双向链表
- 【剑指offer】二叉搜索树与双向链表
- Set克隆
- Kubernets搭建Kubernetes-dashboard
- vijos 1061 迎春舞会之三人组舞
- JavaScript之trim函数的实现
- MYSQL 安装配置 基于WIN10
- 【剑指offer】二叉搜索树与双向链表
- Android Studio 快捷键大全
- 使用Ajax异步加载图片
- 去掉超链接的下划线
- Python标准库中的functools模块函数详解
- 【寻找最佳小程序】01期:影视评分小工具“豆瓣评分”——产品设计要点及专家评析
- 浏览器中输入url后发生了什么
- iOS与OS多线程和内存管理---GCD的API详解
- 如何理解封装