聊聊二叉树的左右子树交换

开发 前端
二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。

[[428239]]

本文转载自微信公众号「三分钟学前端」,作者sisterAn。转载本文请联系三分钟学前端公众号。

翻转一棵二叉树。

示例:

输入:

     4 
   /   \ 
  2     7 
 / \   / \ 
1   3 6   9 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

输出:

     4 
   /   \ 
  7     2 
 / \   / \ 
9   6 3   1 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

遍历+交换左右子树

解题思路: 从根节点开始依次遍历每个节点,然后交换左右子树既可

const invertTree = (root) => { 
    if(!root) return null 
    // 先翻转当前节点的左右子树 
    const temp = root.left 
    root.left = root.right 
    root.right = temp 
    // 然后遍历左子树 
    invertTree(root.left
    // 再遍历右子树 
    invertTree(root.right
    return root 

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

这里采用的是前序遍历,也可以是后序遍历或层序遍历

 

leetcode:https://leetcode-cn.com/problems/invert-binary-tree

 

责任编辑:武晓燕 来源: 三分钟学前端
相关推荐

2021-11-28 23:54:28

子树B结构

2020-04-27 07:05:58

二叉树左子树右子树

2021-09-29 10:19:00

算法平衡二叉树

2021-12-03 09:16:03

二叉树打印平衡

2021-04-19 07:47:42

数据结构二叉树Tree

2021-04-20 08:37:14

数据结构二叉树

2021-04-28 20:12:27

数据结构创建

2021-08-27 11:36:44

二叉树回溯节点

2020-09-23 18:25:40

算法二叉树多叉树

2022-10-26 23:58:02

二叉树数组算法

2021-03-17 08:19:22

二叉树LeetCode

2013-07-15 16:35:55

二叉树迭代器

2023-02-01 07:27:46

序列化二叉树根节点

2020-11-25 08:25:02

二叉树节点

2021-09-15 07:56:32

二叉树层次遍历

2021-03-22 08:23:29

LeetCode二叉树节点

2023-05-08 15:57:16

二叉树数据结构

2021-09-02 11:31:28

二叉搜索树迭代法公共祖先

2021-09-07 11:01:41

二叉搜索树序数组

2018-03-15 08:31:57

二叉树存储结构
点赞
收藏

51CTO技术栈公众号