前言
仅记录学习笔记,如有错误欢迎指正。
题目
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。如下图所示
示例
- 输入: {10,6,14,4,8,12,16}
- 输出:4,6,8,10,12,14
解法
最近有点忙呀~/**
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 root) {
if(root == null){
return null;
}
if(root.left == null && root.right == null){
return root;
}
//先构造左子树
TreeNode left = Convert(root.left);
//找到左子树双链表的最后一个节点
TreeNode p = left;
while(p!=null&&p.right!=null){
p = p.right;
}
//双向链表
if(left != null){
p.right = root;
root.left = p;
}
//构造右子树
TreeNode right = Convert(root.right);
if(right != null){
right.left = root;
root.right = right;
}
return left == null? root:left;
}
}