翻转一棵二叉树。
示例:
输入:
4
/
2 7
/ /
1 3 6 9
输出:
4
/
7 2
/ /
9 6 3 1
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/invert-binary-tree
1 public class InvertBinaryTree { 2 static class TreeNode { 3 int val; 4 TreeNode left; 5 TreeNode right; 6 TreeNode(int x) { 7 val = x; 8 } 9 } 10 //方式一:到叶子节点就返回 11 public TreeNode invertTree1(TreeNode root) { 12 if(root == null || (root.left == null && root.right == null)) { 13 return root; 14 } 15 TreeNode leftNode = invertTree1(root.left); //找到左结点 16 TreeNode rightNode = invertTree1(root.right); //找到右结点 17 root.left = rightNode; //交换节点 18 root.right = leftNode; 19 return root; 20 } 21 //方式二:直到null才返回 22 public TreeNode invertTree2(TreeNode root) { 23 if(root == null) { 24 return null; 25 } 26 TreeNode leftNode = root.left; 27 root.left = invertTree2(root.right); 28 root.right = invertTree2(leftNode); 29 return root; 30 } 31 }