二叉排序树转单链表
今天刷了一道力扣,等级为简单,思路也比较容易想到,但是我没写出来,哈哈哈哈。
题目如下:
其实思路很简单,就是中序遍历然后转成单链表吗,可是题目要求转换操作应该是原址的,就是在二叉排序树本身直接进行转换,这就稍微有点困难了。
解决这道题中心思想就是中序遍历,可以采用递归,也可以非递归,非递归效率相较于递归低很多。
递归
public Node convertBiNode(Node root) {
Node head = new Node(0);// 单链表的头指针哨兵
// 开始中序遍历
inorder(root, head);
return head.right;//返回的时单链表的头结点
}
/**
*
* @param root 二叉排序树的根节点
* @param prev 前驱指针,在递归的时候不断地移动
* @return 返回的是
*/
private Node inorder(Node root,Node prev){
if (root != null){
//向左子树进行递归
prev = inorder