首页 > 代码库 > 二叉树-专题
二叉树-专题
题型一:非递归遍历二叉树后续
struct node { bool isfirst; int val; TreeNode* left,*right; node(int _val,bool _isfirst){ val=_val; isfirst=_isfirst; this->left=this->right=NULL; } };vector<int> postorderTraversal(TreeNode *root) { // write your code here vector<int> ret; stack<node> sta; TreeNode* p=root; while(sta.size()>0||p) { while(p) { node n1(p->val,false); n1.left=p->left; n1.right=p->right; sta.push(n1); p=p->left; } if(sta.size()>0) { node tmp=sta.top(); sta.pop(); if(tmp.isfirst==false) { tmp.isfirst=true; sta.push(tmp); p=tmp.right; } else { ret.push_back(tmp.val); p=NULL; } } } return ret; }
题型二:非递归二叉序前序遍历(中序差不多,就不写了,自己去脑补去。。。。
vector<int> preorderTraversal(TreeNode *root) { // write your code here vector<int> ret; stack<TreeNode*> sta; TreeNode* p=root; while(sta.size()>0||p) { while(p) { sta.push(p); ret.push_back(p->val); p=p->left; } if(sta.size()) { TreeNode* tmp=sta.top(); sta.pop(); p=tmp->right; } } return ret; }
二叉树-专题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。