1. Algorithm
110. 平衡二叉樹(簡單)
描述:
給定一個二叉樹,判斷它是否是高度平衡的二叉樹。
本題中,一棵高度平衡二叉樹定義為:
一個二叉樹每個節(jié)點 的左右兩個子樹的高度差的絕對值不超過1。
示例:
給定二叉樹 [3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7
返回 true
思路:
平衡二叉樹的條件:
- 左子樹是平衡二叉樹
- 右子樹是平衡二叉樹
- 左右子樹的高度差的絕對值不超過 1
深度優(yōu)先遍歷,遞歸求解樹的高度。終止條件是不滿足上述三個條件之一,二叉樹的最大深度可以參考第 114 題。
class Solution {
public boolean isBalanced(TreeNode root) {
return height(root) != -1;
}
private int height(TreeNode root) {
if (root == null) {
return 0;
}
int leftHeight = height(root.left);
int rightHeight = height(root.right);
if (leftHeight == -1 || rightHeight == -1
|| Math.abs(leftHeight - rightHeight) > 1) {
return -1;
}
return Math.max(leftHeight, rightHeight) + 1;
}
}
分析:
- 時間復(fù)雜度:O(n)
- 空間復(fù)雜度:O(1)
2. Review
Basic Linux Commands for Beginners 為新手準備的 Linux 命令
Linux 是免費、開源的操作系統(tǒng)內(nèi)核,你可以修改 Linux 上的任何東西,并用自己的名字重新發(fā)布,比如 Ubuntu、Debian、Red Hat 等版本。
Linux 主要應(yīng)用于服務(wù)器上,世界上 90% 的服務(wù)器都運行 Linux 系統(tǒng),因為它安全、快速并且免費。Android 手機占據(jù)智能機的 80%,它也是基于 Linux 內(nèi)核。大多數(shù)的病毒出現(xiàn)在 Windows 上,而不是 Linux。
shell 是一個程序,它接收用戶的命令,并傳遞給系統(tǒng)執(zhí)行,然后顯示結(jié)果。Linux 有個命令行界面,是 shell 的主要交互部分。
接下來,作者列舉了一些基本的命令:cd/ls/pwd/mkdir/rm/touch/man/cp/mv/cat/sudo/echo/df/vi/tar/apt-get/chmod/ping 等。
3. Tip
oh my zsh 非常強大的 shell,擁有豐富的插件和主題,只支持 macOS 和 Linux。不愧是終極 Shell,提高 10x 效率沒問題。有時候一成不變挺悲哀的,嘗試折騰一下才有樂趣。Have a try, you will enjoy it.
4. Share
程序員應(yīng)該學習 Linux,理解設(shè)計理想,熟悉常用命令。對于高手來說,一個 Terminal 就夠了。在 macOs 或 Linux 下開發(fā),比 Windows 省心多了。首先沒有字符編碼的問題,其次 Unix-like 平臺上有非常多的開發(fā)工具,程序員用了絕對愛不釋手。另外,Unix-like 平臺上的軟件不像 Windows 系統(tǒng)上那樣流氓,而且不容易感染病毒。值得慶幸的是,Windows 10 內(nèi)置了 Linux,我們可以下載 Ubuntu 體驗。雖然是閹割版,但用來學習夠用了。