二叉树的遍历包含3种遍历方式,前序遍历、中序遍历以及后序遍历。
代码
首先定义相关结点信息,包含左右结点以及值:
struct TreeNode {
char val;
TreeNode *left;
TreeNode *right;
TreeNode(char x) : val(x), left(NULL), right(NULL) {}
};
前序遍历就是先遍历根节点,然后遍历左结点,最后遍历右结点。
前序遍历的迭代方法:
vector<char> preorderTraversal(TreeNode* root) {
vector<char> result;
stack< TreeNode *> s;
s.push(root);
while (!s.empty()) {
TreeNode *node = s.top();
s.pop();
if (NULL != node) {
result.push_back(node->val);
s.push(node->right);
s.push(node->left);
}
}
return result;
}