File tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed
maximum-depth-of-binary-tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Original file line number Diff line number Diff line change 1+ // class TreeNode {
2+ // val: number;
3+ // left: TreeNode | null;
4+ // right: TreeNode | null;
5+ // constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
6+ // this.val = val === undefined ? 0 : val;
7+ // this.left = left === undefined ? null : left;
8+ // this.right = right === undefined ? null : right;
9+ // }
10+ // }
11+
12+ /**
13+ * https://leetcode.com/problems/maximum-depth-of-binary-tree
14+ * using recursion
15+ * T.C. O(n)
16+ * S.C. O(n)
17+ */
18+ function maxDepth ( root : TreeNode | null ) : number {
19+ return dfs ( root , 0 ) ;
20+ }
21+
22+ function dfs ( node : TreeNode | null , depth : number ) : number {
23+ if ( ! node ) {
24+ return depth ;
25+ }
26+ return Math . max ( dfs ( node . left , depth + 1 ) , dfs ( node . right , depth + 1 ) ) ;
27+ }
28+
29+ /**
30+ * using stack
31+ * T.C. O(n)
32+ * S.C. O(n)
33+ */
34+ function maxDepth ( root : TreeNode | null ) : number {
35+ if ( ! root ) {
36+ return 0 ;
37+ }
38+
39+ let max = 0 ;
40+
41+ const stack : [ TreeNode | null , number ] [ ] = [ ] ;
42+ stack . push ( [ root , 1 ] ) ;
43+
44+ while ( stack . length ) {
45+ const [ node , depth ] = stack . pop ( ) ! ;
46+
47+ if ( node ) {
48+ max = Math . max ( max , depth ) ;
49+ stack . push ( [ node . left , depth + 1 ] ) ;
50+ stack . push ( [ node . right , depth + 1 ] ) ;
51+ }
52+ }
53+
54+ return max ;
55+ }
You can’t perform that action at this time.
0 commit comments