https://leetcode-cn.com/problems/invert-binary-tree/
翻转一棵二叉树。
示例:
输入:
4<br /> / \<br /> 2 7<br /> / \ / \<br />1 3 6 9<br />输出:
4<br /> / \<br /> 7 2<br /> / \ / \<br />9 6 3 1
/**
* Definition for a binary tree node.
* public 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;
* }
* }
*/
class Solution {
public TreeNode invertTree(TreeNode root) {
if(root == null){
return null;
}
TreeNode node = null;
node = root.left;
root.left = root.right;
root.right = node;
invertTree(root.left);
invertTree(root.right);
return root;
}
}
拿到题目一开始都没看懂。。。。
所谓的反转二叉树,要求其实很简单:
对一颗二叉树的每一个节点,交换它的左右子节点。
思路很简单,对于一个节点root来说,它的左右节点的左右节点到底是怎么变换的和root本身没有半毛钱关系。root只要知道,它身上有两个口袋,左边的口袋放的是A,右边的口袋放的是B,反转以后它左边的口袋里变成了B,右边口袋里变成了A,这就够了。至于A和B怎么变,那是它们自己的事。