2025年- H26-Lc134- 226. 翻转二叉树(树)---java版
1.题目描述
2.思路
递归调用左右子树,就是调换左右子树的值。每个节点调换左右子树。
从根节点开始,递归地对树进行遍历,并从叶子节点先开始翻转。如果当前遍历到的节点 root 的左右两棵子树都已经翻转,那么我们只需要交换两棵子树的位置,即可完成以 root 为根节点的整棵子树的翻转。
3.代码实现
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;}
}public class H226 {public TreeNode invertTree(TreeNode root) {if(root==null){return null;}else{TreeNode left=invertTree(root.left);TreeNode right=invertTree(root.right);root.left=right;root.right=left;return root;}}// 前序遍历输出翻转后的树结构(根 -> 左 -> 右)public static void qianxu(TreeNode root){if(root==null){return ;}System.out.print(root.val+" ");qianxu(root.left);qianxu(root.right);}public static void main(String[] args){TreeNode node3=new TreeNode(3,null,null);TreeNode node2=new TreeNode(2);TreeNode root=new TreeNode(1,node2,node3);H226 test12=new H226();TreeNode tree=test12.invertTree(root);System.out.print("输出前序遍历的结果:");qianxu(tree);}
}