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
我的前方是万里征途,星辰大海!!