欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

剑指offer第26题:二叉搜索树与双向链表

程序员文章站 2022-05-20 13:49:25
...

题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
import java.util.*;
public class Solution {
    public TreeNode Convert(TreeNode pRootOfTree) {
        //利用BST的中序遍历
        if(pRootOfTree==null)
            return pRootOfTree;
        Stack<TreeNode> stack=new Stack<>();
        TreeNode cur=pRootOfTree;
        TreeNode pre=null;
        boolean isFirst=true;
        while(cur!=null||!stack.isEmpty()){
            while(cur!=null){
                stack.push(cur);
                cur=cur.left;
            }
            cur=stack.pop();
            if(isFirst){
                pRootOfTree=cur;
                pre=pRootOfTree;
                isFirst=false;
            }else{
                pre.right=cur;
                cur.left=pre;
                pre=cur;
            }
            cur=cur.right;
        }
        return pRootOfTree;
    }
}
相关标签: BST 中序遍历