二叉树
Ealiser
这个作者很懒,什么都没留下…
展开
-
LeetCode第669题 修剪二叉搜索树
算法深度优先搜索核心思想主要还是如何减枝比较重要。代码class Solution { public TreeNode trimBST(TreeNode root, int low, int high) { if (root == null) return null; if(root.val > high || root.val < low) { root = del(root); root .原创 2022-04-25 11:08:48 · 2009 阅读 · 0 评论 -
LeetCode第114题 二叉树展开为链表
算法核心思想代码class Solution { public void flatten(TreeNode root) { if (root == null) return; List<TreeNode> temp = new ArrayList<>(); dfs(root,temp); for (int i = 1; i < temp.size(); ++i) { ..原创 2022-04-16 11:51:03 · 3005 阅读 · 0 评论 -
LeetCode第113题 路径总和II
算法回溯和深度优先搜索核心思想二叉树很适合用深度优先搜索去做,简单快捷。这道题值得注意点是必须从根到叶子,同时没必要减枝,减枝的条件也有点复杂。代码class Solution { List<List<Integer>> res = new LinkedList<>(); public List<List<Integer>> pathSum(TreeNode root, int targetSum) { .原创 2022-04-15 16:14:03 · 1860 阅读 · 0 评论 -
LeetCode第105题 从前序与中序遍历序列构造二叉树
算法分治算法核心思想可以根据前序遍历找到每一颗树的根节点,将中序遍历分为两个部分,分别定义左子树方法和右子树方法。代码class Solution { int num = 0; public TreeNode buildTree(int[] preorder, int[] inorder) { TreeNode root = new TreeNode(preorder[0]); int i = 0; for(;i < in.原创 2022-04-15 08:31:28 · 2665 阅读 · 0 评论 -
LeetCode第144.94.145题 二叉树的三种遍历
算法回溯法、深度优先搜索核心思想三者在代码上的区别就是在哪里保存根的值。代码//先序遍历class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new LinkedList<>(); if(root == null) return res; dfs(root,res); .原创 2022-04-11 14:05:23 · 1013 阅读 · 0 评论