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);
        }
    }
  • 相关阅读:
    shared pointer
    realsense数据分析
    cmake log
    Qt自定义类添加qvector报错
    Java csv
    opencv C++ mask_rcnn
    realsense data
    Test
    ubuntu18 bluebooth
    LSTM_Model
  • 原文地址:https://www.cnblogs.com/nlw-blog/p/12431919.html
Copyright © 2011-2022 走看看