網(wǎng)站圖片優(yōu)化大小網(wǎng)絡(luò)營銷策劃書步驟
404.左葉子之和
算法鏈接:
404. 左葉子之和 - 力扣(LeetCode)
類型: 二叉樹
難度: 簡單
思路:要判斷一個(gè)節(jié)點(diǎn)是否為左葉子節(jié)點(diǎn),只能通過其父節(jié)點(diǎn)進(jìn)行判斷。
題解:
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
//解法1:遞歸法
class Solution {public int sumOfLeftLeaves(TreeNode root) {if(root == null||root.left==null&&root.right==null){return 0;}int l = sumOfLeftLeaves(root.left);if(root.left!=null&&root.left.left==null&&root.left.right==null){l+= root.left.val;}int r = sumOfLeftLeaves(root.right);return l+r;}
}
//解法2:迭代法
513.找樹左下角的值
算法鏈接:
513. 找樹左下角的值 - 力扣(LeetCode)
類型: 二叉樹
難度: 中等
思路:層序遍歷法,當(dāng)每一層插入第一個(gè)(同一層最左邊)的節(jié)點(diǎn)時(shí),記錄該節(jié)點(diǎn)并且將其返回。
遞歸法:前序遍歷,判斷當(dāng)層數(shù)+1時(shí)記錄當(dāng)前值。(順序:中、左、右)
題解:
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
//解法1:層序遍歷迭代法
class Solution {public int findBottomLeftValue(TreeNode root) {int res = 0;Deque<TreeNode> que = new LinkedList<>();que.offer(root);while(!que.isEmpty()){int size = que.size();for(int i = 0;i<size;i++){TreeNode poll = que.poll();if(i==0){res = poll.val;}if(poll.left!=null){que.offer(poll.left);}if(poll.right!=null){que.offer(poll.right);}}}return res;}
}
//解法2:遞歸法
112. 路徑總和
算法鏈接:
112. 路徑總和 - 力扣(LeetCode)
類型: 二叉樹
難度: 簡單
題解:
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public boolean hasPathSum(TreeNode root, int targetSum) {return search(root,0,targetSum);}boolean search(TreeNode root,int sum,int targetSum){if(root == null){return false;}sum+=root.val;if(root.left==null&&root.right==null){return sum==targetSum;}boolean l = search(root.left,sum,targetSum);boolean r = search(root.right,sum,targetSum);return l||r;}
}