zoukankan      html  css  js  c++  java
  • 分行从上到下打印二叉树

    题目

      从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入下图中的二叉树,则依次打印出8、6、10、5、7、9、11

    思路

      与从上到下打印二叉树类似https://www.cnblogs.com/tianzeng/p/10186431.html,本题在定义两个变量,next_level表示下一层要打印的节点数 ,在遍历的如果有字结点,就执行next_level加一操作,be_printed表示本层剩余要打印的节点数,如果为0,表示已经打印完,可以打印下一层。

    #include <iostream>
    #include <queue>
    using namespace std;
    
    struct tree
    {
        double data;
        struct tree *left,*right;
        tree(int d=0):data(d)
        {
            left=right=nullptr;
        }
    };
    class Solution
    {
        public:
            void create(tree *&root);
            void print(tree *root);
            tree *root;    
    };
    void Solution::create(tree *&root)
    {
        double x;
        cin>>x;
        if(x==0)
            root=nullptr;
        else
        {
            root=new tree();
            root->data=x;
            create(root->left);
            create(root->right);
        }
    }
    void Solution::print(tree *root)
    {
        if(!root)
            return;
        
        queue<tree *> q;
        q.push(root);
        int next_level=0;//下一层要打印的节点数 
        int be_printed=1;//本层要打印的节点数,开始只有一个根节点,初始化为1 
        
        while(!q.empty())
        {
            auto t=q.front();
            cout<<t->data<<" ";
            if(t->left)
            {
                q.push(t->left);
                ++next_level;
            }
            if(t->right)
            {
                q.push(t->right);
                ++next_level;
            }
            q.pop();
            --be_printed;
            
            if(!be_printed)
            {
                cout<<endl;
                be_printed=next_level;
                next_level=0;
            }
             
        }
    }
    int main()
    {
        Solution s;
        s.create(s.root);
        s.print(s.root);
        return 0;
    }
  • 相关阅读:
    ACM XXX1
    最大公约数算法
    struct和typedef struct
    PKU 1012
    素数算法3种
    ZOJ 1088
    学习ios开发计划书
    iphone系统架构以及各层提供的主要服务
    iOS 界面元素尺寸
    开发手机版网站有哪些前端框架?
  • 原文地址:https://www.cnblogs.com/tianzeng/p/10187702.html
Copyright © 2011-2022 走看看