1 题目
求给定的二叉树的前序遍历。
2 解法
2.1 递归解法
2.2 非递归解法
前序遍历,先遍历根节点,然后遍历左节点,最后是右节点,所以用栈的方式,先是根节点入栈,然后出栈遍历,如果该节点有左右节点,那么左右节点入栈(应为右节点先入栈,然后是左节点,因为左节点先遍历,所以是左节点后入栈).
/*** struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/class Solution {
public:/*** * @param root TreeNode类 * @return int整型vector*/vector<int> preorderTraversal(TreeNode* root) {// write code herevector<int> res;if (root != nullptr) {stack<TreeNode*> tS;tS.push(root);while (!tS.empty()) {TreeNode* tN = tS.top();tS.pop();res.push_back(tN->val);if (tN->right != nullptr)tS.push(tN->right);if (tN->left != nullptr)tS.push(tN->left);}}return res;}
};