226. 翻转二叉树

翻转一棵二叉树。

示例:

输入:

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 }

 

posted @ 2019-06-21 19:10  往南的小燕子  阅读(208)  评论(0编辑  收藏  举报