zoukankan      html  css  js  c++  java
  • 二叉搜索树与双向链表

    将BST转成双向链表,相当于中序遍历

    非递归法:

    public class Solution {
     public static TreeNode Convert(TreeNode pRootOfTree) {
            TreeNode p = pRootOfTree;
            TreeNode q = null;
            if(p!=null){
                LinkedList<TreeNode> list = new LinkedList<>();
                list.push(p);//根结点入栈
                while(p.left!=null){//左子树的根节点入栈
                    p = p.left;
                    list.push(p);
                }
                TreeNode head = p;//题目需要输出的链表头节点
                while(!list.isEmpty()){
                    p = (TreeNode)list.pop();
                    if(q == null){//q指向链表当前结点的前一个结点
                        q = p;
                    }
                    else{
                        q.right = p;
                        p.left = q;
                        q = p;
                    }
                    if(p.right != null){//右子树入栈
                        list.push(p.right);
                        p = p.right;
                        while(p.left!=null){
                            p = p.left;
                            list.push(p);
                        }
                    }
                
                }
                return head;
            }
            return null;
        }
    }

    https://en.wikipedia.org/wiki/Tree_traversal#Iterative_Traversal

  • 相关阅读:
    第几天?
    比较 String,StringBuffer,StringBuilder
    Elasticsearch中一些重要概念
    Elasticsearch 中的 Bucket
    Elasticsearch的倒排索引
    配置SSL、TLS以及HTTPS来确保es、kibana、beats、logstash的安全
    ELK集群设置X-pack密码
    logstash启动时找不到自定义的JAVA_HOME环境变量
    elasticsearch启动时使用自带的JAVA版本
    ES破解x-pack
  • 原文地址:https://www.cnblogs.com/dyq19/p/10549710.html
Copyright © 2011-2022 走看看