Time:2019/4/21
Title: Invert Binary Tree
Difficulty: Easy
Author: 小鹿
javascript
Invert a binary tree.java
反轉二叉樹git
Example:github
Input:算法
4
/ \
2 7
/ \ / \
1 3 6 9
複製代碼
Output:編程
4
/ \
7 2
/ \ / \
9 6 3 1
複製代碼
由上圖能夠分析反轉二叉樹,只是對左右子樹的數據進行交換,再仔細觀察,並非每一個節點的左右子樹進行交換,而是左子樹的葉子節點和右子樹的葉子節點進行交換,另外兩個子節點進行交換,那咱們不得不用到遞歸了。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 歡迎關注我我的公衆號:「一個不甘平凡的碼農」,記錄了本身一路自學編程的故事。