zoukankan      html  css  js  c++  java
  • 二叉搜索树和双向链表 --剑指offer

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

    思路:二叉搜索树的中序遍历序列是递增的 所以就是二叉树的中序遍历

    非递归:

    import java.util.Stack;
    public class Solution {
            public TreeNode Convert(TreeNode pRootOfTree) {
            if(pRootOfTree == null){
                return  null;
            }
            Stack<TreeNode> stack=new Stack<>();
            TreeNode p=pRootOfTree;
            TreeNode pre=null;
            boolean isFirst=true;
            while (p!=null || !stack.isEmpty()){
                while (p != null){
                    stack.push(p);
                    p = p.left;
                }
                if(!stack.isEmpty()){
                    p=stack.pop();
                    if(isFirst){
                        pRootOfTree = p;
                        pre=pRootOfTree;
                        isFirst=false;
                    }else {
                        p.left=pre;
                        pre.right=p;
                        pre=p;
                    }
                    p=p.right;
                }
            }
            return pRootOfTree;
        }
    }

    递归:

    import java.util.Stack;
    public class Solution {
        TreeNode pre=null;
            public TreeNode Convert(TreeNode pRootOfTree) {
            if(pRootOfTree == null){
                return null;
            }
            ConvertCore(pRootOfTree);
            TreeNode root=pRootOfTree;
            while(root.left != null){
                root = root.left;
            }
            return root;
        }
        public void ConvertCore(TreeNode  cur){
            if(cur == null){
                return;
            }
            ConvertCore(cur.left);
            cur.left=pre;
            if (pre != null){
                pre.right=cur;
            }
            pre=cur;
            ConvertCore(cur.right);
        }
    }
  • 相关阅读:
    随机购买彩票问题
    for循环小题
    20150914 异常语句 math的方法 去空格 索引
    20150913生成三个10以内的随机数,不想等
    winform 计算器 两步走
    枚举、常量、结构
    视频嵌入网页, 分享嵌入网页!
    !!!框架集
    日常总结!!!
    随笔练习!!!
  • 原文地址:https://www.cnblogs.com/nlw-blog/p/12431919.html
Copyright © 2011-2022 走看看