概述
二叉搜索树与双向链表
- 题目描述
- 解决思路(写的有点拉跨后面再改)
- 实现代码
题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
链接:二叉搜索树与双向链表
解决思路(写的有点拉跨后面再改)
核心:怎么改变结点的前驱指向和后继指向
实现代码
public class Solution {
public TreeNode Convert(TreeNode pRootOfTree) {
if(pRootOfTree == null) return null;
ConvertChild(pRootOfTree); //中序遍历结束
TreeNode head = pRootOfTree; //定义head指向头结点
//从左向下遍历,直到head.next为空退出循环,此时的head就是链表的头结点
while(head.left != null){
head = head.left;
}
return head;
}
TreeNode prev = null;
public void ConvertChild(TreeNode pCur){
if(pCur == null) return ;
ConvertChild(pCur.left);
pCur.left = prev;
//判断prev是否为空,下面if语句再第二轮遍历开始发挥作用
if(prev != null){
prev.right = pCur;
}
prev = pCur;
ConvertChild(pCur.right);
}
}
最后
以上就是懵懂口红为你收集整理的Java 二叉搜索树与双向链表(面试题)的全部内容,希望文章能够帮你解决Java 二叉搜索树与双向链表(面试题)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复