LeetCode 之 JavaScript 解答第226題 —— 翻轉二叉樹(Invert Binary Tree)


Time:2019/4/21
Title: Invert Binary Tree
Difficulty: Easy
Author: 小鹿
javascript


題目:Invert Binary Tree(反轉二叉樹)

Invert a binary tree.java

反轉二叉樹git

Example:github

Input:算法

4
   /   \
  2     7
 / \   / \
1   3 6   9
複製代碼

Output:編程

4
   /   \
  7     2
 / \   / \
9   6 3   1
複製代碼

Solve:

▉ 問題分析

由上圖能夠分析反轉二叉樹,只是對左右子樹的數據進行交換,再仔細觀察,並非每一個節點的左右子樹進行交換,而是左子樹的葉子節點和右子樹的葉子節點進行交換,另外兩個子節點進行交換,那咱們不得不用到遞歸了。bash

▉ 算法思路

1)判斷樹是否爲空(同時也是終止條件)。spa

2)左右子樹結點交換。code

3)分別對左右子樹進行遞歸。遞歸

▉ 代碼實現
var invertTree = function(root) {
    //判斷當前樹是否爲 null
    if(root == null) return root;
	//左右子樹結點交換
    let right = root.right;
    let left = root.left;
    root.right = left;
    root.left = right;
	//分別對左右子樹進行遞歸
    invertTree(left);
    invertTree(right);
    //返回樹的根節點
    return root;
};
複製代碼
歡迎一塊兒加入到 LeetCode 開源 Github 倉庫,能夠向 me 提交您其餘語言的代碼。在倉庫上堅持和小夥伴們一塊兒打卡,共同完善咱們的開源小倉庫! Github:https://github.com/luxiangqiang/JS-LeetCode 歡迎關注我我的公衆號:「一個不甘平凡的碼農」,記錄了本身一路自學編程的故事。
相關文章
相關標籤/搜索