114 lines
2.7 KiB
Java
114 lines
2.7 KiB
Java
//给你一个二叉树的根节点 root ,请你将此二叉树上下翻转,并返回新的根节点。
|
||
//
|
||
// 你可以按下面的步骤翻转一棵二叉树:
|
||
//
|
||
//
|
||
// 原来的左子节点变成新的根节点
|
||
// 原来的根节点变成新的右子节点
|
||
// 原来的右子节点变成新的左子节点
|
||
//
|
||
//
|
||
// 上面的步骤逐层进行。题目数据保证每个右节点都有一个同级节点(即共享同一父节点的左节点)且不存在子节点。
|
||
//
|
||
//
|
||
//
|
||
// 示例 1:
|
||
//
|
||
//
|
||
//输入:root = [1,2,3,4,5]
|
||
//输出:[4,5,2,null,null,3,1]
|
||
//
|
||
//
|
||
// 示例 2:
|
||
//
|
||
//
|
||
//输入:root = []
|
||
//输出:[]
|
||
//
|
||
//
|
||
// 示例 3:
|
||
//
|
||
//
|
||
//输入:root = [1]
|
||
//输出:[1]
|
||
//
|
||
//
|
||
//
|
||
//
|
||
// 提示:
|
||
//
|
||
//
|
||
// 树中节点数目在范围 [0, 10] 内
|
||
// 1 <= Node.val <= 10
|
||
// 树中的每个右节点都有一个同级节点(即共享同一父节点的左节点)
|
||
// 树中的每个右节点都没有子节点
|
||
//
|
||
// Related Topics 树 深度优先搜索 二叉树 👍 102 👎 0
|
||
|
||
package leetcode.editor.cn;
|
||
|
||
import com.code.leet.entiy.TreeNode;
|
||
|
||
//156:上下翻转二叉树
|
||
public class BinaryTreeUpsideDown {
|
||
public static void main(String[] args) {
|
||
Solution solution = new BinaryTreeUpsideDown().new Solution();
|
||
// TO TEST
|
||
TreeNode n1 = new TreeNode(1);
|
||
TreeNode n2 = new TreeNode(2);
|
||
TreeNode n3 = new TreeNode(3);
|
||
TreeNode n4 = new TreeNode(4);
|
||
TreeNode n5 = new TreeNode(5);
|
||
n1.left = n2;
|
||
n1.right = n3;
|
||
n2.left = n4;
|
||
n2.right = n5;
|
||
solution.upsideDownBinaryTree(n1);
|
||
}
|
||
//leetcode submit region begin(Prohibit modification and deletion)
|
||
|
||
/**
|
||
* 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 upsideDownBinaryTree(TreeNode root) {
|
||
if (root == null || root.left == null) {
|
||
return root;
|
||
}
|
||
dfs(root);
|
||
root.left = null;
|
||
root.right = null;
|
||
return node;
|
||
}
|
||
|
||
TreeNode node;
|
||
TreeNode temp;
|
||
|
||
private void dfs(TreeNode root) {
|
||
if (root == null || root.left == null) {
|
||
node = root;
|
||
temp = root;
|
||
return;
|
||
}
|
||
dfs(root.left);
|
||
temp.left = root.right;
|
||
temp.right = root;
|
||
temp = root;
|
||
}
|
||
}
|
||
//leetcode submit region end(Prohibit modification and deletion)
|
||
|
||
}
|