编辑
2024-05-12
算法题
00
请注意,本文编写于 363 天前,最后修改于 363 天前,其中某些信息可能已经过时。

image.png

思路都在注释里,就是bfs层序遍历

java
class Solution { public List<Double> averageOfLevels(TreeNode root) { List<Double> averages = new ArrayList<>(); //答案数组 if (root == null) { //特判 return averages; } Queue<TreeNode> queue = new LinkedList<>(); //bfs队列 queue.offer(root); //根结点入队 while (!queue.isEmpty()) { int levelSize = queue.size(); double sum = 0; for (int i = 0; i < levelSize; i++) { //入队并计算 TreeNode node = queue.poll(); sum += node.val; if (node.left != null) { queue.offer(node.left); } if (node.right != null) { queue.offer(node.right); } } averages.add(sum / levelSize); } return averages; } }

image.png

java
public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { int lenA = 0, lenB = 0; ListNode tempA = headA, tempB = headB; // 计算两个链表的长度 while (tempA != null) { lenA++; tempA = tempA.next; } while (tempB != null) { lenB++; tempB = tempB.next; } // 对齐链表 tempA = headA; tempB = headB; if (lenA > lenB) { for (int i = 0; i < lenA - lenB; i++) { tempA = tempA.next; } } else { for (int i = 0; i < lenB - lenA; i++) { tempB = tempB.next; } } // 遍历链表,找到相交节点 while (tempA != null && tempB != null) { if (tempA == tempB) { return tempA; } tempA = tempA.next; tempB = tempB.next; } return null; } }

image.png

java
class Solution { public boolean isSymmetric(TreeNode root) { return isMirror(root.left,root.right); } private boolean isMirror(TreeNode t1, TreeNode t2) { if (t1 == null && t2 == null) return true; if (t1 == null || t2 == null) return false; return (t1.val == t2.val) && isMirror(t1.right, t2.left) && isMirror(t1.left, t2.right); } }

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!