

public class 翻转二叉树 {
public void midIteratorTree(TreeNode treeNode){
if (null==treeNode){
return;
}
System.out.print(treeNode.val+" ");
midIteratorTree(treeNode.left );
midIteratorTree(treeNode.right);
}
public TreeNode invertTree(TreeNode root){
if (null==root){
return root;
}
if (null==root.left&&null==root.right){
return root;
}
invertTree(root.left);
invertTree(root.right);
TreeNode leftTree=root.left;
root.left=root.right;
root.right=leftTree;
return root;
}
public static void main(String[] args) {
TreeNode t1=new TreeNode(4);
TreeNode t2=new TreeNode(2);
TreeNode t3=new TreeNode(7);
TreeNode t4=new TreeNode(1);
TreeNode t5=new TreeNode(3);
TreeNode t6=new TreeNode(6);
TreeNode t7=new TreeNode(9);
t1.left=t2;
t1.right=t3;
t2.left=t4;
t2.right=t5;
t3.left=t6;
t3.right=t7;
翻转二叉树 aa = new 翻转二叉树();
System.out.println("---------");
aa.midIteratorTree(t1);
aa.invertTree(t1);
System.out.println("-----------");
aa.midIteratorTree(t1);
}
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
本文介绍了一种翻转二叉树的算法实现,通过递归方式交换二叉树节点的左右子树,实现了二叉树的完全翻转。文章提供了完整的Java代码示例,包括二叉树节点定义、翻转函数及中序遍历函数,展示了翻转前后的二叉树结构。
1万+

被折叠的 条评论
为什么被折叠?



