二叉树的前序遍历非递归
时间: 2023-09-07 18:17:24 浏览: 91
前序遍历非递归算法-树和二叉树
二叉树的前序遍历非递归方式可以使用栈来实现。具体步骤如下:
1. 将根节点入栈。
2. 循环执行以下步骤,直到栈为空:
a. 弹出栈顶元素并访问。
b. 如果该节点有右子树,将其右子树入栈。
c. 如果该节点有左子树,将其左子树入栈。
下面是一个示例代码实现:
```
vector<int> preorderTraversal(TreeNode* root) {
vector<int> result;
stack<TreeNode*> s;
if (root != nullptr) {
s.push(root);
}
while (!s.empty()) {
TreeNode* node = s.top();
s.pop();
result.push_back(node->val);
if (node->right != nullptr) {
s.push(node->right);
}
if (node->left != nullptr) {
s.push(node->left);
}
}
return result;
}
```
其中,TreeNode 是二叉树的节点定义,val 表示节点的值。函数返回值是一个 vector,记录了前序遍历的结果。
阅读全文