[leetcode]二叉树先序遍历

来源:互联网 发布:哪里招淘宝客服 编辑:程序博客网 时间:2024/05/07 10:32
struct TreeNode {int val;    TreeNode *left;    TreeNode *right;    TreeNode(int x) : val(x), left(NULL), right(NULL) {}};//先序遍历递归版本vector<int> result;vector<int> preorderTraversal(TreeNode *root) {if (root!=NULL){result.push_back(root->val);preorderTraversal(root->left);preorderTraversal(root->right);}return result;}//先序遍历栈版本1(数组)const int maxsize =1000;vector<int> preorderTraversal(TreeNode *root) {vector<int> result;TreeNode *st[maxsize],*p;int top=-1;if (root!=NULL){top++;st[top]=root;while(top>-1){p=st[top];top--;result.push_back(p->val);if (p->right!=NULL){top++;st[top]=p->right;}if (p->left!=NULL){top++;st[top]=p->left;}}}return result;}//先序遍历栈版本2(STL)vector<int> preorderTraversal(TreeNode *root) {vector<int> result;TreeNode *p;stack<TreeNode *> st; if (root!=NULL){st.push(root);//根节点进栈while(!st.empty()){p=st.top(); //退栈并访问该节点st.pop();result.push_back(p->val);if (p->right!=NULL)//右孩子先进栈{st.push(p->right);}if (p->left!=NULL){st.push(p->left);}}}return result;}

0 0