26. 二叉搜索树与双向链表
2019-03-14 本文已影响0人
丶沧月
题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
解题思路
代码实现
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
//直接用中序遍历
public class Solution {
private TreeNode pre = null;//head 的 pre 节点
private TreeNode head = null;//双向链表的头节点
public TreeNode Convert(TreeNode root) {
inOrder(root);
return head;
}
private void inOrder(TreeNode node) {
if (node == null)
return;
//第一次运行时,会使最左边节点为链表第一个节点
inOrder(node.left);
node.left = pre;
if (pre != null)
pre.right = node;
pre = node;
if (head == null)
head = node;
inOrder(node.right);
}
}