lygzrq 2021-07-29 19:53 采纳率: 33.3%
浏览 46

python 二叉树前序遍历 和深度方法(深度方法不会写)

要求在现有代码上修改,正确的返回前序遍历;再请提供一个深度方法,完善在solution类中

class TreeNode:
    def __init__(self, val, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right


class Solution:
    def __init__(self,val=None):
        self.root = TreeNode(val)

    def insertLeft(self, item):
        node = TreeNode(item)
        if self.root.left is None:
            self.root.left = node
        else:
            t = node
            t.left = self.root.left
            self.root.left = t

    def insertRight(self,  newitem):
        node = TreeNode(newitem)
        if self.root.right == None:
            self.root.right = node
        else:
            t = node
            t.right = self.root.right
            self.root.right = t

    def getLeftchild(self):
        return self.root.left

    def getRightchild(self):
        return self.root.right

    def getRootVal(self):
        return self.root.val

    def preorderTraversal(self):
        if not self.root:
            return []
        # 前序递归
        return [self.root.val] + self.preorderTraversal(self.getLeftchild()) + self.preorderTraversal(self.getRightchild())
    
    #深度算法
    def depth(self):
        


if __name__ == '__main__':
    b = Solution('A')
    b.insertLeft('a')
    b.insertRight('b')
    print(b.preorderTraversal())

  • 写回答

1条回答 默认 最新

  • weixin_58974274 2021-07-30 07:44
    关注

    深搜要用到栈。
    对于任意一棵树,都可以这样进行操作。
    举例:
    img
    深搜算法
    A入栈。【A】
    A有结点? 有B, B入栈。【A,B】
    B有结点? 有D, D入栈。【A,B,D】
    D有结点? 无,D出栈。【A,B】
    B有结点? 有F, F入栈 【A,B,F】
    F有结点? 无,F出栈【A,B】
    B有结点? 无,B出栈 【A】
    A有结点? 有C,C入栈 【A,C】
    C有结点? 无。C出栈 【A】
    A有结点? 无,A出栈【】

    评论

报告相同问题?

问题事件

  • 创建了问题 7月29日

悬赏问题

  • ¥15 opencv 无法读取视频
  • ¥15 用matlab 实现通信仿真
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图