Python 什么';这个DFS实现有什么问题?
我不确定下面的深度优先搜索代码有什么问题。预期vs程序输出包含在末尾。我通过运行Geeksforgeks的代码(对他们进行s/o)获得了预期的输出。任何帮助都将不胜感激。 这是我的密码:Python 什么';这个DFS实现有什么问题?,python,depth-first-search,Python,Depth First Search,我不确定下面的深度优先搜索代码有什么问题。预期vs程序输出包含在末尾。我通过运行Geeksforgeks的代码(对他们进行s/o)获得了预期的输出。任何帮助都将不胜感激。 这是我的密码: class Node: def __init__(self, val): self._val = val self._chdrn = [] class Nary: def __init__(self, n: int): self._n = n
class Node:
def __init__(self, val):
self._val = val
self._chdrn = []
class Nary:
def __init__(self, n: int):
self._n = n
self._root = None
def insert(self, val: int):
nn = Node(val)
if not self._root:
self._root = nn
else:
def recur(parent: Node):
print("Parent: ", parent._val)
if len(parent._chdrn) < self._n:
parent._chdrn.append(nn)
return 1
else:
for chdl in parent._chdrn:
ret = recur(chdl)
if ret == 1:
break
parent = self._root
recur(parent)
def dfs(self):
def _dfs(node: Node):
if not node: return
print(node._val, end=' ')
for chld in node._chdrn:
# print("current child = ", chld._val)
_dfs(chld)
_dfs(self._root)
Tree = Nary(3)
for i in range(10): Tree.insert(i)
Tree.dfs()
类节点:
定义初始值(self,val):
自我。_val=val
self.\u chdrn=[]
第三类:
定义初始化(self,n:int):
自
self.\u根=无
def插入(自身,val:int):
nn=节点(val)
如果不是自根:
自根=nn
其他:
def recur(父级:节点):
打印(“父项:”,父项。\u val)
如果len(父项)
#
预期产出:01145627893程序输出:0 1 4 7 8 9 5 6 2 7 8 9 3您的DFS代码没有任何问题。您使用
insert
方法构建的树是错误的
在recur
中循环遍历子对象时,需要在递归情况下返回。否则,将在多个父节点下插入同一节点
class Node:
def __init__(self, val):
self._val = val
self._chdrn = []
class Nary:
def __init__(self, n: int):
self._n = n
self._root = None
def insert(self, val: int):
print(f"Inserting {val}")
nn = Node(val)
if not self._root:
self._root = nn
else:
def recur(parent: Node):
if len(parent._chdrn) < self._n:
print(f"Added under parent: {parent._val}")
parent._chdrn.append(nn)
return 1
else:
for chdl in parent._chdrn:
ret = recur(chdl)
if ret == 1:
return 1 # not just break
parent = self._root
recur(parent)
def dfs(self):
def _dfs(node: Node):
if not node: return
print(node._val, end=' ')
for chld in node._chdrn:
# print("current child = ", chld._val)
_dfs(chld)
_dfs(self._root)
Tree = Nary(3)
for i in range(10): Tree.insert(i)
Tree.dfs()
您应该绘制树并手动执行DFS验证
0 1 4 7 8 9 5 6 2 3