zoukankan      html  css  js  c++  java
  • leetcode——971. 翻转二叉树以匹配先序遍历

    虽然思路是差不多的,但是我自己写的话就越写越繁琐,不能抽丝剥茧言简意赅,最后成了一团乱麻。

    那种精巧感还是没办法掌握,一道题解的思想是多么巧妙,但是我自己抽不出来那种主干。

    虽菜犹学。

    虽菜犹学……

    List<Integer> flipped;
        int index;
        int[] voyage;
    
        public List<Integer> flipMatchVoyage(TreeNode root, int[] voyage) {
            flipped = new ArrayList();
            index = 0;
            this.voyage = voyage;
    
            dfs(root);
            if (!flipped.isEmpty() && flipped.get(0) == -1) {
                flipped.clear();
                flipped.add(-1);
            }
    
            return flipped;
        }
    
        public void dfs(TreeNode node) {
            if (node != null) {
                if (node.val != voyage[index++]) {
                    flipped.clear();
                    flipped.add(-1);
                    return;
                }
    
                if (index < voyage.length && node.left != null &&
                        node.left.val != voyage[index]) {
                    flipped.add(node.val);
                    dfs(node.right);
                    dfs(node.left);
                } else {
                    dfs(node.left);
                    dfs(node.right);
                }
            }
        }

    ——2020.6.22

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    JSP介绍
    Cookie和Session的原理及异同
    过滤器的使用
    JAVA 集合
    **JVM** 类加载机制
    *JAVA IO/NIO*
    jvm
    ioc
    spring问题总结
    aop详解
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/13177928.html
Copyright © 2011-2022 走看看