在树上使用递归DFS时,可以通过将深度作为参数传递给递归函数来获取任何节点的深度。但是,对于非递归DFS,我不确定如何获取节点的深度。
我有一个基本的DFS模板设置,但是我不知道要更改什么才能返回目标节点的深度。
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def dfs(root, val):
stack = [root]
while stack:
node = stack.pop()
if node.val == val:
return node
if node.left:
stack.append(node.left)
if node.right:
stack.append(node.right)
我找到了以下解决方案:Depth of a tree using DFS,但是它似乎使用了另一种方式来存储树,而且似乎还需要事先了解整棵树。