• leetcode——1028.从先序遍历还原二叉树


    public TreeNode recoverFromPreorder(String S) {
            Stack<TreeNode> path = new Stack<>();  //构建好栈
            //定义一个变量来遍历S
            int i = 0;
            //定义一个int变量来确定节点的层数
            //先将S转换成char[]
            char[] s = S.toCharArray();
            //开始遍历S
            while(i<s.length){
                int level = 0;
                //先确定层数
                while(s[i] == '-'){
                    ++i;
                    ++level;
                }
                //再确定结点的值
                //先将值初始化为0
                int value = 0;
                while(i<s.length && Character.isDigit(s[i])){
                    value = value * 10 + s[i] - '0';
                    ++i;
                }
                //构造树的结点
                TreeNode node = new TreeNode(value);
                //插入到正确位置
                if(level == path.size()){
                    if(!path.isEmpty()) {
                        path.peek().left = node;
                    }
                }else{
                    while (level < path.size()){
                        path.pop();
                    }
                    path.peek().right = node;
                }
                path.push(node);
            }
            while (path.size() > 1){
                path.pop();
            }
            return path.peek();
        }

    只是看懂了官方题解又默写了一遍而已……太难了,我脑子跟不上……想哭………………

    ——2020.6.20

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    Puppet部署
    ldap命令
    openldap slapd.conf参数
    ldap objectclass
    ldap 测试表设计
    Nginx/LVS/HAProxy负载均衡软件的优缺点
    SNAT DNAT MASQUERADE 区别
    iptables常用规则
    Python中文注释报错的解决方法
    用Node.js给邮箱发送邮件
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/13169818.html
Copyright © 2020-2023  润新知