题目:
level:困难
我们从二叉树的根节点 root 开始进行深度优先搜索。
在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值。(如果节点的深度为 D,则其直接子节点的深度为 D + 1。根节点的深度为 0)。
如果节点只有一个子节点,那么保证该子节点为左子节点。
给出遍历输出 S,还原树并返回其根节点 root。
来源:力扣(LeetCode)
解题思路:
通过输入的字符串中的 " - " 来确定二叉树的深度,从而连接整个二叉树:根据先序遍历的规律,深度连续增加的两个元素之间为父子关系。第一个val为root,” - “表示 root.left 或root.right,” - - "表示第三层的左右子树。使用迭代算法。
python代码如下:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution