321
社区成员




给定一棵二叉树,节点定义如下: structNode { Node *pLeft; Node *pRight; int data; }; 要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。下面是一个例子:
输入一行字符串。1(2)表示2是1的子树。(1<=strlen(str)<=1000)
输出二叉树的层次。每层占一行。
输入
1(2(4,5(7,8)),3(6))
输出
1
2 3
4 5 6
7 8
好吧,C站这个考试环境,没有实现链表、树、图之类的算法,只能模拟了。行吧,用正则切割一下,就很简单的完成了
import re
s = input()
r = re.findall(r'\d+|[\(]|[\)]',s)
arr,lv = [],0
for i in r:
if i == '(':
lv += 1
continue
if i == ')':
lv -= 1
continue
if len(arr) == lv:
arr.append([])
arr[lv].append(i)
for i in arr:
print(*i)