題152-題154
題目鏈結題目描述
請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。
例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。
1
/ \ 2
2/ \ / \34
43
但是下面這個 [1,2,2,null,3,null,3] 則不是映象對稱的:
1
/ \ 2
2 \ \
33
示例 1:
輸入:root = [1,2,2,3,4,4,3]
輸出:true
示例 2:
輸入:root = [1,2,2,null,3,null,3]
輸出:false
限制:0 <= 節點個數 <= 1000
注意:本題與主站 101 題相同:
題目分析
r1,r2分別是根節點的左右子樹;
若是r1,r2都為空,返回true;
若是r1,r2有乙個為空,返回false;
判斷r1的左子樹和r2的右子樹、r1的右子樹和r2的左子樹是否相等,並返回。
/**
* definition for a binary tree node.
* function treenode(val)
*//**
* @param root
* @return
*/var
issymmetric
=function
(root)
return
ismirror
(root,root);}
;
題目鏈結題目描述
輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。
示例 1:
給定二叉樹 [3,9,20,null,null,15,7]
3
/ \9
20/ \
157
返回 true 。
示例 2:
給定二叉樹 [1,2,2,3,3,null,null,4,4]
1
/ \2
2/ \33
/ \4
4
返回 false 。
限制:1 <= 樹的結點個數 <= 10000
注意:本題與主站 110 題相同:
題目分析
設定flag = true,flag用來判斷是不是平衡二叉樹;
分別遍歷左子樹和右子樹;
計算每次遍歷後的左子樹和右子樹高度差,高度差大於1的時候,flag=false;
/**
* definition for a binary tree node.
* function treenode(val)
*//**
* @param root
* @return
*/var
isbalanced
=function
(root)
};
題目鏈結題目描述
輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉節點依次經過的節點(含根、葉節點)形成樹的一條路徑,最長路徑的長度為樹的深度。
例如:給定二叉樹 [3,9,20,null,null,15,7],
3
/ \9
20/ \
157
返回它的最大深度 3 。
節點總數 <= 10000
注意:本題與主站 104 題相同:
題目分析
遍歷二叉樹的左子樹和右子樹,直到為空;
判斷找出當前最長路徑,並記錄。
/**
* definition for a binary tree node.
* function treenode(val)
*//**
* @param root
* @return
*/var
maxdepth
=function
(root)
if(root.left)
rode
(root.left,num+1)
;if(root.right)
rode
(root.right,num+1)
;}return max;
};
刷題 樹篇 98 驗證二叉搜尋樹
98.驗證二叉搜尋樹 給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 1 3 輸出 true 示例 2 輸入 5 1 4 3 6 輸...
演算法題 LeetCode刷題(五)
資料結構和演算法是程式設計路上永遠無法避開的兩個核心知識點,本系列 演算法題 旨在記錄刷題過程中的一些心得體會,將會挑出leetcode等最具代表性的題目進行解析,題解基本都來自於leetcode官網 本文是第五篇。給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以...
LeetCode刷題筆記 98 驗證二叉搜尋樹
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...