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())

深搜要用到栈。
对于任意一棵树,都可以这样进行操作。
举例:
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出栈【】