[英]print all the path of n-ary tree python
I want to print all the paths from the root to the leaf nodes in an N-ary tree in python. 我想在python中的N元树中打印从根到叶节点的所有路径。 I have an idea to print it in binary tree but doing this in N-ary doesn't give me the correct result. 我有一个想法在二叉树中打印它,但是在N-ary中这样做并不能给我正确的结果。
I'm poping and Visiting each node from the child node list here but not sure how to print the paths separately for each leaf node. 我在这里弹出并访问子节点列表中的每个节点,但不确定如何分别打印每个叶节点的路径。
class createnode:
def __init__(self,val):
self.data=val
self.child=[]
def traverse(root):
global path
if root.child:
while(len(root.child)>0):
x=root.child.pop(0)
path.append(x.data)
traverse(x)
else:
printarray(path)
def printarray(path):
print(path)
root = createnode(10)
root.child.append(createnode(2))
root.child.append(createnode(4))
root.child[0].child.append(createnode(15))
root.child[0].child.append(createnode(20))
root.child[0].child.append(createnode(25))
root.child[0].child.append(createnode(30))
root.child[1].child.append(createnode(45))
root.child[1].child.append(createnode(50))
root.child[1].child.append(createnode(55))
root.child[1].child.append(createnode(60))
path=[]
total_val=30
traverse(root)
Expected output: 预期产量:
10, 2, 15 10、2、15
10, 2, 20 10、2、20
10, 2, 25 10、2、25
10, 2, 30 10、2、30
10, 4, 45 10、4、45
10, 4, 50 10、4、50
10, 4, 55 10、4、55
10, 4, 60 10、4、60
Try this: 尝试这个:
def traverse(node, path = []):
path.append(node.data)
if len(node.child) == 0:
print(path)
path.pop()
else:
for child in node.child:
traverse(child, path)
path.pop()
Produces the following output with your example: 用您的示例产生以下输出:
[10, 2, 15]
[10, 2, 20]
[10, 2, 25]
[10, 2, 30]
[10, 4, 45]
[10, 4, 50]
[10, 4, 55]
[10, 4, 60]
If someone needs it in javascript: 如果有人在javascript中需要它:
findPaths(node, path, paths){
let childrens = node.childrens;
path.push(node);
if(childrens.length == 0){
paths.push(path.slice());
path.pop();
} else {
for (let i = 0; i < children.length; i++) {
findPaths(children, path, paths);
}
path.pop();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.