只爱洗碗 2021-11-08 21:34 采纳率: 89.5%
浏览 16
已结题

请问有没有人会解答,帮助我一下,非常

img

请问有没有人会解答,帮助我一下,我不会,帮我答一下吧,如果有会的

  • 写回答

1条回答 默认 最新

  • 从善若水 5G/6G通信领域优质创作者 2021-11-08 21:37
    关注
    
    class Solution {
    public:
        vector<vector<int> > Print(TreeNode* pRoot) {
            vector<vector<int>> ans;
            if(!pRoot) return ans;
            stack<TreeNode*> stack1;
            stack<TreeNode*> stack2;
            stack1.push(pRoot);
            while(!stack1.empty() || !stack2.empty()){
                vector<int> tmp_ans1;
                while(!stack1.empty()){//出栈顺序是从左到右时,将子节点也按从左到右的顺序压入stack2,这样stack2的出栈顺序就是从右往左
                    TreeNode* tmp = stack1.top();
                    stack1.pop();
                    tmp_ans1.push_back(tmp->val);
                    if(tmp->left){
                        stack2.push(tmp->left);
                    }
                    if(tmp->right){
                        stack2.push(tmp->right);
                    }
                }
                if(!tmp_ans1.empty()) ans.push_back(tmp_ans1);
                tmp_ans1.clear();
                while(!stack2.empty()){//出栈顺序是从右到左时,将子节点也按照从右到左的顺序压住stack1,这样stack1的出栈顺序就是从左往右
                    TreeNode* tmp = stack2.top();
                    stack2.pop();
                    tmp_ans1.push_back(tmp->val);
                    if(tmp->right) stack1.push(tmp->right);
                    if(tmp->left) stack1.push(tmp->left);
                }
                if(!tmp_ans1.empty()) ans.push_back(tmp_ans1);
            }
            return ans;
        }
        
    };
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月16日
  • 已采纳回答 11月8日
  • 创建了问题 11月8日

悬赏问题

  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊