当前位置:实例文章 » JAVA Web实例» [文章]JAVA二刷-Day15 | 层序遍历*10, 226.翻转二叉树, 101.对称二叉树

JAVA二刷-Day15 | 层序遍历*10, 226.翻转二叉树, 101.对称二叉树

发布人:shili8 发布时间:2025-03-12 18:45 阅读次数:0

**JAVA二刷-Day15**

今天我们将学习三道经典的二叉树问题:层序遍历、翻转二叉树和对称二叉树。

###1. 层序遍历(BFS)

####问题描述:

给定一个二叉树,输出其每一层的节点值。

#### 示例:

输入:[3,9,20,null,null,15,7]

输出:
[
[3],
[9,20],
[15,7]
]

#### 解决方案:

我们可以使用队列来实现层序遍历。首先,入队根节点,然后开始循环直到队列为空。

javaimport java.util.*;

public class Solution {
 public List> levelOrder(TreeNode root) {
 if (root == null) return new ArrayList<>();

 List> result = new ArrayList<>();
 Queue queue = new LinkedList<>();
 queue.offer(root);

 while (!queue.isEmpty()) {
 int size = queue.size();
 List level = new ArrayList<>();

 for (int i =0; i < size; i++) {
 TreeNode node = queue.poll();
 level.add(node.val);

 if (node.left != null) queue.offer(node.left);
 if (node.right != null) queue.offer(node.right);
 }

 result.add(level);
 }

 return result;
 }
}


###2. 翻转二叉树####问题描述:

给定一个二叉树,翻转该树,使得每个节点的左子树成为右子树,反之亦然。

#### 示例:

输入:[4,2,7,1,3,6,9]

输出:[4,7,2,9,3,6,1]

#### 解决方案:

我们可以使用递归来实现翻转二叉树。首先,定义一个函数来交换两个节点的值,然后再递归地交换每个节点的左子树和右子树。

javapublic class Solution {
 public TreeNode invertTree(TreeNode root) {
 if (root == null) return null;

 // 交换当前节点的值 int temp = root.val;
 root.val = root.right.val;
 root.right.val = temp;

 // 递归地交换左子树和右子树 root.left = invertTree(root.left);
 root.right = invertTree(root.right);

 return root;
 }
}


###3. 对称二叉树####问题描述:

给定一个二叉树,判断该树是否是对称的。

#### 示例:

输入:[1,2,2,3,4,4,3]

输出:true#### 解决方案:

我们可以使用递归来实现对称性检查。首先,定义一个函数来比较两个节点的值,然后再递归地比较每个节点的左子树和右子树。

javapublic class Solution {
 public boolean isSymmetric(TreeNode root) {
 if (root == null) return true;

 // 比较当前节点的值 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.left, t2.right)
 && isMirror(t1.right, t2.left);
 }
}


以上就是今天学习的三道经典二叉树问题。这些问题可以帮助你更好地理解二叉树的结构和属性,并且可以在实际编程中应用这些知识。

相关标签:java开发语言
其他信息

其他资源

Top