美文网首页
把二叉树打印成多行

把二叉树打印成多行

作者: UAV | 来源:发表于2020-06-21 07:15 被阅读0次

    题目描述

    从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

    /*
    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>>result;
            //二叉树当前层遍历结果
            vector<int>layer_result;
            //vector 存储当前层的结点。
            vector<TreeNode*>current_layer;
            //vector 存储下一层的结点。
            vector<TreeNode*>next_layer;
    
            current_layer.push_back(pRoot);
            if (pRoot == NULL) {
                return result;
            }
            while (!current_layer.empty())
            {
                layer_result.push_back(current_layer[0]->val);
                if (current_layer[0]->left != NULL) {
                    next_layer.push_back(current_layer[0]->left);
                }
                if (current_layer[0]->right != NULL) {
                    next_layer.push_back(current_layer[0]->right);
                }
                current_layer.erase(current_layer.begin());
                if (current_layer.empty()) {
                    //二叉树下一层结点作为当前层结点
                    current_layer.assign(next_layer.begin(),next_layer.end());
                    //清空下一层结点结果
                    next_layer.clear();
                    //存储遍历当前层结果
                    result.push_back(layer_result);
                    //清空当前层遍历结果。
                    layer_result.clear();
                }
            }
            return result;
        }
    
    };
    
    

    相关文章

      网友评论

          本文标题:把二叉树打印成多行

          本文链接:https://www.haomeiwen.com/subject/tihoxktx.html