[ LeetCode ]前序、中序遍历二叉树
程序员文章站
2022-05-19 21:05:58
...
Binary Tree Preorder Traversal
//前序遍历二叉树
class Solution {
public:
vector<int> preorderTraversal(TreeNode *root) {
vector<int> res;
if (root == NULL)
return res;
stack<TreeNode*> s;
TreeNode* pCur = NULL;
s.push(root);
while (!s.empty())
{
pCur = s.top();
s.pop();
while (pCur)
{
res.push_back(pCur->val);
if (pCur->left)
s.push(pCur->left);
pCur = pCur->left;
}
}
return res;
}
};
Binary Tree Inorder Traversal
//中序遍历二叉树--非递归
class Solution {
public:
vector<int> postorderTraversal(TreeNode *root) {
vector<int> res;
if (root == NULL)
return res;
stack<TreeNode*> s;
TreeNode* pCur = root;
TreeNode* pre = NULL;
while (pCur || !s.empty())
{
if (pCur != NULL)//结点不为空,将结点压栈,并访问左子树
{
s.push(pCur);
pCur = pCur->left;
}
else if (s.top()->right != pre)
{
pCur = s.top()->right;
pre = NULL;
}
else
{
//访问右子树
res.push_back(s.top()->val);
pre = s.top();
s.pop();
}
}
return res;
}
};
推荐阅读
-
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
-
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
-
[PHP] 算法-根据前序和中序遍历结果重建二叉树的PHP实现
-
c/c++ 用前序和中序,或者中序和后序,创建二叉树
-
Python实现二叉树前序、中序、后序及层次遍历示例代码
-
求二叉树的层序遍历 python版本
-
【算法】二叉树的前序、中序、后序、层序遍历和还原。
-
PHP基于非递归算法实现先序、中序及后序遍历二叉树操作示例
-
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
-
c++智能指针和二叉树(1): 图解层序遍历和逐层打印二叉树