diff --git a/README.md b/README.md index 70250c0..5218dc0 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,7 @@ continually updating 😃. * [100. Same Tree](./src/0100_same_tree/same_tree.go)   *`binary tree;`*   *`dfs`* * [101. Symmetric Tree](./src/0101_symmetric_tree/symmetric_tree.go)   *`binary tree;`*   *`dfs;`*  *`bfs;`* * [102. Binary Tree Level Order Traversal](src/0102_binary_tree_level_order_traversal/binary_tree_level_order_traversal.go)   *`binary tree;`*   *`dfs`* +* [104. Maximum Depth of Binary Tree](src/0104_maximun_depth_of_binary_tree/maxdobt.go)   *`binary tree depth`* * [107. Binary Tree Level Order Traversal II](./src/0107_binary_tree_level_order_traversal_2/binary_tree_level_order_traversal2.go)   *`binary tree;`*   *`bfs`* * [111. Minimum Depth of Binary Tree](./src/0111_minimum_depth_of_binary_tree/minimum_depth_of_binary_tree.go)   *`binary tree;`*   *`dfs`* * [112. Path Sum](./src/0112_path_sum/path_sum.go)   *`binary tree;`*   *`dfs`* diff --git a/src/0104_maximun_depth_of_binary_tree/maxdobt.go b/src/0104_maximun_depth_of_binary_tree/maxdobt.go new file mode 100644 index 0000000..20b831d --- /dev/null +++ b/src/0104_maximun_depth_of_binary_tree/maxdobt.go @@ -0,0 +1,40 @@ +/* +104. Maximum Depth of Binary Tree +https://leetcode.com/problems/maximum-depth-of-binary-tree/ + +Given a binary tree, find its maximum depth. + +The maximum depth is the number of nodes along +the longest path from the root node down to the farthest leaf node. + +Note: A leaf is a node with no children. +*/ +// time: 2019-01-06 + +package maxdobt + +// TreeNode Definition for a binary tree node. +type TreeNode struct { + Val int + Left *TreeNode + Right *TreeNode +} + +// Recursive +// time complexity: O(n), where n is the nodes number in the tree. +// space complexity: O(h), where h is the height of the tree. +func maxDepth(root *TreeNode) int { + if root == nil { + return 0 + } + left := maxDepth(root.Left) + right := maxDepth(root.Right) + + var max int + if left > right { + max = left + } else { + max = right + } + return max + 1 +} diff --git a/src/0104_maximun_depth_of_binary_tree/maxdobt_test.go b/src/0104_maximun_depth_of_binary_tree/maxdobt_test.go new file mode 100644 index 0000000..9d7233d --- /dev/null +++ b/src/0104_maximun_depth_of_binary_tree/maxdobt_test.go @@ -0,0 +1,27 @@ +package maxdobt + +import "testing" + +func TestMaxDepth(t *testing.T) { + root := createBinaryTree([]int{1, 2, 3, 4, 5}) + expected := 3 + + if res := maxDepth(root); res != expected { + t.Errorf("expected %d, got %d", expected, res) + } + +} + +func createBinaryTree(nums []int) *TreeNode { + return performCreate(nums, 0) +} + +func performCreate(nums []int, index int) *TreeNode { + if index >= len(nums) { + return nil + } + tree := &TreeNode{Val: nums[index]} + tree.Left = performCreate(nums, 2*index+1) + tree.Right = performCreate(nums, 2*index+2) + return tree +} diff --git a/src/README.md b/src/README.md index 60689cc..74f80a7 100644 --- a/src/README.md +++ b/src/README.md @@ -49,6 +49,7 @@ |0100|[Same Tree](./0100_same_tree/same_tree.go)|Easy|*`binary tree`*| |0101|[Symmetric Tree](./0101_symmetric_tree/symmetric_tree.go)|Easy|*`stack;`* *`recursion; `* *`iterative`*| |0102|[102. Binary Tree Level Order Traversal](0102_binary_tree_level_order_traversal/binary_tree_level_order_traversal.go)|Medium|*`binary tree;`* *`bfs`*| +|0104|[104. Maximum Depth of Binary Tree](0104_maximun_depth_of_binary_tree/maxdobt.go)|Easy|*`binary tree`*| |0107|[Binary Tree Level Order Traversal II](./0107_binary_tree_level_order_traversal_2/binary_tree_level_order_traversal2.go)|Easy|*`binary tree`*| |0111|[Minimum Depth of Binary Tree](./0111_minimum_depth_of_binary_tree/minimum_depth_of_binary_tree.go)|Easy|*`binary tree`*| |0112|[Path Sum](./0112_path_sum/path_sum.go)|Easy|*`binary tree`*|