镜像二叉树并层序打印 Java实现

来源:互联网 发布:阿里云linux服务器 编辑:程序博客网 时间:2024/04/28 15:50
import java.util.LinkedList;import java.util.Queue;public class Test19_MirrorTree{public static void main(String[] args){//创建二叉树TreeNode headNode1 = new TreeNode(1);TreeNode node2 = new TreeNode(2);TreeNode node3 = new TreeNode(3);TreeNode node4 = new TreeNode(4);TreeNode node5 = new TreeNode(5);TreeNode node6 = new TreeNode(6);TreeNode node7 = new TreeNode(7);headNode1.left = node2;headNode1.right = node3;node2.left = node4;node2.right = node5;node3.left = node6;node3.right = node7;//镜像二叉树mirrorTree(headNode1);//打印二叉树printLevelTree(headNode1);}private static void printLevelTree(TreeNode headNode1){if(headNode1 == null){return;}Queue<TreeNode> queue = new LinkedList<TreeNode>();queue.offer(headNode1);System.out.println("=====镜像后层序输出结果为====");while(!queue.isEmpty()){TreeNode tmp = queue.poll();System.out.print(tmp.value+" ");//注意一下为对tmp的判断 如果用headNode1会产生错误if(tmp.left != null){queue.offer(tmp.left);}if(tmp.right != null){queue.offer(tmp.right);}}}private static void mirrorTree(TreeNode headNode1){//递归结束条件if(headNode1 == null){return;}//只有一个根节点 直接返回if(headNode1.left == null && headNode1.right == null){return;  //不需要处理}//交换非叶节点的左右子节点TreeNode tmp = headNode1.left;headNode1.left = headNode1.right;headNode1.right = tmp;if(headNode1.left != null){mirrorTree(headNode1.left);}if(headNode1.right != null){mirrorTree(headNode1.right);}}}

1 0