剑指Offer-- 之字形顺序打印二叉树
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ class Solution { public: vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int> > res; if (pRoot == NULL){ return res; } stack<TreeNode*> stack1; stack<TreeNode*> stack2; bool flags = true; stack1.push(pRoot); while (!stack1.empty() || !stack2.empty()){ if (flags == true){ vector<int> tmp; while (!stack1.empty()){ tmp.push_back(stack1.top()->val); if(stack1.top() -> left != NULL){ stack2.push(stack1.top()-> left); } if (stack1.top() -> right != NULL){ stack2.push(stack1.top()-> right); } stack1.pop(); } res.push_back(tmp); flags = false; } else{ vector<int> tmp; while (!stack2.empty()){ tmp.push_back(stack2.top()->val); if (stack2.top() -> right != NULL){ stack1.push(stack2.top() -> right); } if (stack2.top() -> left != NULL){ stack1.push(stack2.top() -> left); } stack2.pop(); } res.push_back(tmp); flags = true; } } return res; } };
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步