面试理想汽车,把我整懵了。。

科技   2024-12-19 15:15   广东  

大家好,我就是那个在B站讲算法的「华南溜达虎」。

今天看到一个帖子,一个同学在面试理想汽车的时候,面试官问他二叉树后续遍历的流程,结果他俩各执己见,互相都很确定自己是正确的,下面是帖子的原文。

评论区更是惊现了神评论,虎哥也是笑喷了。

其实在我们面试的时候,和面试官有效沟通是很重要的,不是只能面试官向候选人提问,候选人在有疑问的时候也可以让面试官详细讲讲他的见解,在这种一来一回的交流中也会加深候选人对面试官所提问题的思考。面试的大忌就是这种和面试官各执己见,最终的结果不用想都知道。大家有没有类似的经历,可以在评论区说说自己的经历。

讲到面试,最近虎哥利用业余时间在B站讲算法,id「华南溜达虎」,我已经把算法面试高频题目列表blind75中的题目讲了一遍,力扣hot100也快讲完了,一个视频五分钟左右,利用空闲时间就把算法学会了,对跳槽找工作升职加薪甚至对考研都有帮助,感兴趣的同学可以 点击底部的「查看全文」 去学习一下。很多看过虎哥视频的同学都反馈讲的由浅及深,清晰明了,下面是一小部分评论截图。

言归正传,今天我们就讲一下二叉树的后序遍历。

基础回顾

后续遍历的流程如下:

  1. 先访问左子树;
  2. 再访问右子树;
  3. 最后访问根节点。

下面我们给出递归法和迭代法两种代码实现。

python代码实现

递归法的实现比较直观,我们直接给出代码。

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

def postorderTraversal(root):
    """
    :param root: TreeNode
    :return: List[int]
    """

    if not root:
        return []
    
    # 后序遍历左子树
    left = postorderTraversal(root.left)
    # 后序遍历右子树
    right = postorderTraversal(root.right)
    # 访问根节点
    return left + right + [root.val]

# 构建一棵树
#     1
#    / \
#   2   3
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)

# 后序遍历
print(postorderTraversal(root))  # 输出[2, 3, 1]

对于迭代法,我们使用一个栈来模拟递归的过程。

首先将所有左子树入栈,然后开始处理栈顶元素。如果栈顶元素有右子树,并且它不是上一次访问的节点,则将右子树的所有左子树入栈,否则访问栈顶元素并将其出栈。重复这个过程直到栈为空。

def postorderTraversal(root):
    """
    :param root: TreeNode
    :return: List[int]
    """

    if not root:
        return []
    
    stack, output = [], []
    while root or stack:
        # 遍历到最左边的节点
        while root:
            stack.append(root)
            root = root.left if root.left else root.right
        # 此时root为空,说明已经到达左下角
        node = stack.pop()
        output.append(node.val)
        # 如果当前节点是上一个节点的左子节点,则转向同父的右子节点
        if stack and stack[-1].left == node:
            root = stack[-1].right
        else:
            # 否则,继续弹栈
            root = None
    return output

# 使用递归法中的例子进行测试
print(postorderTraversal(root))  # 输出[2, 3, 1]

今天的分享就到这里,希望大家有所收获!

东京将启动上四休三工作制

离谱!985本大厂两年经验面试小红书简历都过不了。。

来字节3个月感觉把苦都吃尽了。。

入职比亚迪一年,我也离职了。。

985硕,国企干了两年半,11月刚被裁。。

编程网事
曾就职于BAT的互联网大厂程序员。个人网站:ldtiger.com
 最新文章