mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-10 20:40:39 +08:00
更新 513.找树左下角的值 python部分代码
1. 上一版本 递归python代码跟题解的方式不同. 个人认为不同方法做出的代码没有必要放在题解里, 建议修改成我提供的python版本. 2. 增加Python3 迭代部分的代码.
This commit is contained in:
@ -274,27 +274,57 @@ class Solution {
|
||||
|
||||
|
||||
Python:
|
||||
|
||||
**递归 - 回溯**
|
||||
```python
|
||||
//递归法
|
||||
# Definition for a binary tree node.
|
||||
# class TreeNode:
|
||||
# def __init__(self, val=0, left=None, right=None):
|
||||
# self.val = val
|
||||
# self.left = left
|
||||
# self.right = right
|
||||
class Solution:
|
||||
def findBottomLeftValue(self, root: TreeNode) -> int:
|
||||
depth=0
|
||||
self.res=[]
|
||||
def level(root,depth):
|
||||
if not root:return
|
||||
if depth==len(self.res):
|
||||
self.res.append([])
|
||||
self.res[depth].append(root.val)
|
||||
level(root.left,depth+1)
|
||||
level(root.right,depth+1)
|
||||
level(root,depth)
|
||||
return self.res[-1][0]
|
||||
max_depth = -float("INF")
|
||||
max_left_value = -float("INF")
|
||||
|
||||
def __traversal(root, left_len):
|
||||
nonlocal max_depth, max_left_value
|
||||
|
||||
if not root.left and not root.right:
|
||||
if left_len > max_depth:
|
||||
max_depth = left_len
|
||||
max_left_value = root.val
|
||||
return
|
||||
|
||||
if root.left:
|
||||
left_len += 1
|
||||
__traversal(root.left, left_len)
|
||||
left_len -= 1
|
||||
|
||||
if root.right:
|
||||
left_len += 1
|
||||
__traversal(root.right, left_len)
|
||||
left_len -= 1
|
||||
return
|
||||
|
||||
__traversal(root, 0)
|
||||
|
||||
return max_left_value
|
||||
```
|
||||
**迭代 - 层序遍历**
|
||||
```python
|
||||
class Solution:
|
||||
def findBottomLeftValue(self, root: TreeNode) -> int:
|
||||
queue = deque()
|
||||
if root:
|
||||
queue.append(root)
|
||||
result = 0
|
||||
while queue:
|
||||
q_len = len(queue)
|
||||
for i in range(q_len):
|
||||
if i == 0:
|
||||
result = queue[i].val
|
||||
cur = queue.popleft()
|
||||
if cur.left:
|
||||
queue.append(cur.left)
|
||||
if cur.right:
|
||||
queue.append(cur.right)
|
||||
return result
|
||||
```
|
||||
Go:
|
||||
|
||||
|
Reference in New Issue
Block a user