一、二叉树的镜像
1.题目
操作给定的二叉树,将其变换为源二叉树的镜像。
二叉树的镜像定义:源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5
2.思路
- 节点为空直接返回。
- 如果这个节点的左右子树不为空,就交换。
- 递归对这个节点的左子树进行求镜像。对这个节点的右子树求镜像。
3.代码
public class Solution {
public void Mirror(TreeNode root){
if (root == null) { // 节点为空直接返回
return;
}
if(root.left != null || root.right != null) { //如果这个节点的左右子树不为空,就交换
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
Mirror(root.left); //递归对这个节点的左子树进行求镜像
Mirror(root.right); //对这个节点的右子树求镜像
}
}
}
二、二叉树的深度
1.题目
输入一棵二叉树,求该树的深度。(从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。)
2.思路
二叉树的深度 = 左右子树深度的最大值 + 1
3.代码
public class Solution {
public int TreeDepth(TreeNode root) {
if(root == null)
return 0;
int left = TreeDepth(root.left); //左子树深度
int right = TreeDepth(root.right); //右子树深度
return 1+Math.max(left,right);
}
}