一,翻转二叉树
1,问题简述
翻转一棵二叉树
2,示例描述
示例:
输入:
4
/ \
2 7
/ \ / \
1 3 6 9
输出:
4
/ \
7 2
/ \ / \
9 6 3 1
备注:
这个问题是受到 Max Howell 的 原问题 启发的 :
谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。
3,题解思路
递归思想的使用
4,题解程序
public class InvertTreeTest {
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;
TreeNode treeNode = invertTree(t1);
System.out.println("treeNode = " + treeNode);
}
public static TreeNode invertTree(TreeNode root) {
if (root == null) {
return root;
}
TreeNode leftNode = invertTree(root.left);
TreeNode rightNode = invertTree(root.right);
TreeNode temp = leftNode;
root.left = rightNode;
root.right = temp;
return root;
}
}
5,总结一下
递归的思想使用,其实也和刚开始学编程时,进行两个数据交换采用局部变量的思路一样