java实现二叉搜索树转双向链表
来源:互联网 发布:合肥淘宝美工培训 编辑:程序博客网 时间:2024/05/20 14:15
/** * 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 * * @author pomay * */class Solution_treetolist{public TreeNode Convert(TreeNode pRootOfTree){TreeNode lastNodeOfList = null;// LastNodeOfList指向已经转换好的链表的最后一个结点// 返回头结点TreeNode headNodeOfList = ConvertNode(pRootOfTree, lastNodeOfList);// 一直倒退到头结点while (headNodeOfList != null && headNodeOfList.left != null)headNodeOfList = headNodeOfList.left;return headNodeOfList;}// 把二叉树转换成链表,获得链表最后结点(即最大结点)TreeNode ConvertNode(TreeNode pNode, TreeNode LastNodeOfList){if (pNode == null)return null;TreeNode current = pNode;if (current.left != null)// 把左子树转成链表LastNodeOfList = ConvertNode(current.left, LastNodeOfList);// 当前结点的左边就是左子树构成的链表的最后一个结点current.left = LastNodeOfList;if (LastNodeOfList != null)// 把转换好的链表后面连接当前结点LastNodeOfList.right = current;// 此时根转换好的链表最后一个结点就是当前结点LastNodeOfList = current;// 同理 把右子树转成链表if (current.right != null)LastNodeOfList = ConvertNode(current.right, LastNodeOfList);return LastNodeOfList;}public static void main(String[] args){TreeNode pRootOfTree = new TreeNode(10);pRootOfTree.left = new TreeNode(6);pRootOfTree.right = new TreeNode(14);pRootOfTree.left.left = new TreeNode(4);pRootOfTree.left.right = new TreeNode(8);pRootOfTree.right.left = new TreeNode(12);pRootOfTree.right.right = new TreeNode(16);Solution_treetolist treetolist = new Solution_treetolist();TreeNode result = treetolist.Convert(pRootOfTree);System.out.print(result.val + " " + result.right.val + " " + result.right.right.val + " "+ result.right.right.right.val + " " + result.right.right.right.right.val + " "+ result.right.right.right.right.right.val + " " + result.right.right.right.right.right.right.val);}}
阅读全文
0 0
- java实现二叉搜索树转双向链表
- 二叉搜索树与双向链表(Java实现)
- 二叉搜索树与双向链表java实现
- 二叉搜索树就地转双向链表二叉搜索树实现文件C++
- 二叉搜索树转双向链表
- 搜索二叉树转双向链表
- 剑指offer--面试题27:二叉搜索树与双向链表--Java实现
- 剑指Offer:面试题27——二叉搜索树与双向链表(java实现)
- 剑指offer----二叉搜索树与双向链表----java实现
- 剑指offer--二叉搜索树与双向链表 Java实现
- java之二叉搜索树转换为双向链表
- 二叉搜索树与双向链表Java
- 二叉搜索树与双向链表(java版)
- 二叉查找树转双向链表JAVA实现
- 数据结构与算法分析笔记与总结(java实现)--二叉树22:二叉搜索树与双向链表
- 二叉搜索树与双向链表
- 二叉搜索树转为双向链表
- 二叉搜索树和双向链表
- 求黑色星期五-Calendar的使用
- nginx+php显示 502 bad gateway的解决方法
- 标示符定义的规则?
- Spark性能优化:资源调优篇
- 整数排序Ⅱ
- java实现二叉搜索树转双向链表
- 数据库设计规范
- openalyer4+geoserver+pgrouting+postgresql+QGIS 所需软件安装 (1)
- 在基本类型中,如果不明确指定,整数型的默认是什么类型?带小数的默认是什么类型?
- 34、第一个只出现一次的字符
- PartitionAssignor分析
- 【详细内容】GM8284DD:28位LVDS图像接收器
- windows dos命令配置JAVA环境变量
- spark设置本地运行模式