- 1
- 0
- 约7.53千字
- 约 22页
- 2026-09-10 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年软件工程师面试笔试题集及答案解析
一、编程基础(5题,每题10分,共50分)
题目1(10分)
编写一个函数,实现二叉树的前序遍历(根-左-右)。不使用递归方法,要求使用栈实现。
python
classTreeNode:
def__init__(self,val=0,left=None,right=None):
self.val=val
self.left=left
self.right=right
defpreorder_traversal(root):
ifnotroot:
return[]
stack,output=[root],[]
whilestack:
node=stack.pop()
output.append(node.val)
ifnode.right:
stack.append(node.right)
ifnode.left:
stack.append(node.left)
returnoutput
答案解析:
前序遍历需要按照根-左-右的顺序访问节点。使用栈可以实现非递归的前序遍历:
1.初始化栈,将根节点入栈
2.当栈不为空时:
a.弹出栈顶节点并加入结果列表
b.先将右子节点入栈(因为栈是后进先出,先处理右子节点)
c.再将左子节点入栈
原创力文档

文档评论(0)