156.上下翻转二叉树
给你一个二叉树的根节点 root
,请你将此二叉树上下翻转,并返回新的根节点。
你可以按下面的步骤翻转一棵二叉树:
- 原来的左子节点变成新的根节点
- 原来的根节点变成新的右子节点
- 原来的右子节点变成新的左子节点
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode() {} 8 * TreeNode(int val) { this.val = val; } 9 * TreeNode(int val, TreeNode left, TreeNode right) { 10 * this.val = val; 11 * this.left = left; 12 * this.right = right; 13 * } 14 * } 15 */ 16 class Solution { 17 TreeNode parent = null; 18 TreeNode right = null; 19 public TreeNode upsideDownBinaryTree(TreeNode root) { 20 if(root==null){ 21 return root; 22 } 23 TreeNode next = root.left; 24 TreeNode newRoot = reverse(root,next); 25 return newRoot; 26 } 27 28 public TreeNode reverse(TreeNode curr,TreeNode next){ 29 // 递归出口:左下角 30 if(next == null){ 31 curr.right = parent; 32 curr.left = right; 33 return curr; 34 } 35 // 记录未来的 父节点和右侧兄弟 36 TreeNode nextParent = curr; 37 TreeNode nextRight = curr.right; 38 next = curr.left; 39 // 修改当前节点,进行翻转 40 curr.left = right; 41 curr.right = parent; 42 parent = nextParent; 43 right = nextRight; 44 curr = next; 45 next = curr.left; 46 // 向下递归 47 return reverse(curr,next); 48 } 49 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程