Traverse Non-Binary Tree [closed]

2024/7/8 7:11:04

I'm trying to traverse a non-binary tree. A string representation of the tree, as a list, is:

['TOP', ['S', ['NP', ['PRP', 'I']], ['VP', ['VBP', 'need'], ['NP',['NP', ['DT', 'a'], ['NN', 'flight']], ['PP', ['IN', 'from'], ['NP',['NNP', 'Atlanta']]], ['PP', ['TO', 'to'], ['NP', ['NP', ['NNP','Charlotte']], ['NP', ['NNP', 'North'], ['NNP', 'Carolina']]]], ['NP',['JJ', 'next'], ['NNP', 'Monday']]]]]]

This is from the Penn Treebank. Ultimately, I'd like to turn this into a binary tree, but first I need a way to traverse the tree, as-is.

Answer
def traverse(tree_of_lists):for item in tree_of_lists:if isinstance(item, list):for x in traverse(item):yield xelse:yield item

This is the "basic" solution -- can run in Python 2.7 and gives you an iterable that you can simply loop on. (In recent Python 3.* versions you'd use yield from item instead of the inner for loop).

The isinstance test is unpleasant but depending on your exact problem it may be the only way to distinguish a "scalar item" from a "sub-tree". There may be better ones but you don't give us enough information to be able to tell. For example, if all "leaves" (scalars) are strings, you might prefer to check for that (still an isinstance check, alas!).

https://en.xdnf.cn/q/120595.html

Related Q&A

Muscle alignment in python

I have a problem with printing my output from muscle aligning in python. My code is:from Bio.Align.Applications import MuscleCommandline from StringIO import StringIO from Bio import AlignIOdef align_v…

why does my function is returning data type None??: Python datatype None

This is my python code for printing an absolute number. My function is returning type None. I am not getting what I have done wrong. Please help me. def n(num):if num<0:return (num*-1)no = input(&qu…

np.sum Not returning total counts

I am trying this code but it does not return total count for zero[x][y], in this case it should return 5 but all it displays 255 five time. THIS CODE IS FOR CONNECTED COMPONENTS AND ZERO IS ONE COMPONE…

Python Printing Dictionary Key and Value side by side

I want a program that prints Key and Value side by side for the following code:This is a Dictionary:d = {M: [Name1, Name2, Name3], F: [Name1,Name2,Name3]}I want the a program that prints in the followi…

can i use rusts match in python? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.This question does not appear to be about programming within the scope defined in the help center.Cl…

Consolidating Elements of a List [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.Want to improve this question? Update the question so it focuses on one problem only by editing this post.Closed 6…

html textarea via python using post function

<div><textarea cols="25" rows="12" name="box" id="box" tabindex="2">TEXT GOES HERE </textarea></div><div><p class=&quo…

Fibonacci in Python - Simple solution [duplicate]

This question already has answers here:How to write the Fibonacci Sequence?(67 answers)Closed 6 years ago.n1 = 1 n2 = 1 n3 = n1 + n2 for i in range(10):n1 + n2print(n3)n1 = n2n2 = n3According to what …

snake game: snake colliding with itself

Hi I am currently writing a snake game code and I am nearly finished however I am having difficulty writing a code which will cause the game to end if the head of the snake collides with its body, I th…

python3 function not defined even though it is

when I try to call the changeProfile function, I keep getting the error "getAuthCode is not defined" even though it is clearly defined. Why do I keep getting this error? What am I doing wron…