反转二叉树问题
翻转一棵二叉树。
示例:
输入:
输出:
问题分析
简单来说就是将每个节点的左右孩子互换,也就是遍历每一个节点然后交换它们的左右孩子,这里就可用到二叉树的各种遍历方法,只是将保存节点值的过程转换为交换左右孩子。(中序遍历不能使用,会将某些节点反转两次)
代码
使用前序边遍历递归方法
//前序遍历解决问题
public TreeNode invertTree(TreeNode root) {
if(root==null) return null;
//反转左右孩子
TreeNode temp=root.left;
root.left=root.right;
root.right=temp;
invertTree(root.left); //左
invertTree(root.right); //右
return root;
}