首页 > 代码库 > 之字形打印二叉树
之字形打印二叉树
问题最关键的是用了栈和队列两个数据结构。在层次遍历的过程中,同时将节点保存到栈中。
vector<vector<int>> zigzagLevelOrder(TreeNode* root) { vector<vector<int>> result; if(root==NULL) return result; vector<int> tempRes; stack<TreeNode *>st; queue<TreeNode *>que; que.push(root); TreeNode *last=root,*temp=root; tempRes.push_back(root->val); result.push_back(tempRes); tempRes.clear(); while(!que.empty()){ temp=que.front(); if(temp->left){ que.push(temp->left); st.push(temp->left); } if(temp->right){ que.push(temp->right); st.push(temp->right); } if(temp==last){ while(!st.empty()){ TreeNode *t=st.top(); tempRes.push_back(t->val); st.pop(); } if(tempRes.size()>0) result.push_back(tempRes); last=que.back(); tempRes.clear(); } que.pop(); } return result;}
之字形打印二叉树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。