zoukankan      html  css  js  c++  java
  • 程序员面试金典--按之字形顺序打印二叉树

    程序员面试金典--按之字形顺序打印二叉树

    题目描述

    请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。

    使用 bfs 和 depth 相结合。

    /*
    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> > ans; 
            if(pRoot == NULL) {
                return ans; 
            }
            TreeNode *pt = pRoot, *cur_s;
            
            queue<TreeNode*> stk;
            queue<int> skd;
            
            stk.push( pt ); 
            skd.push( 1 ); 
            
            int cur_tmp, depth = 1; 
            vector<int> tmp;
            
            while(!stk.empty()){
                cur_s = stk.front();  stk.pop(); 
                cur_tmp = skd.front();   skd.pop();  
                
                if(cur_tmp != depth){
                    if(depth%2 == 0){
                        reverse(tmp.begin(), tmp.end()); 
                    }
                    ans.push_back(tmp); 
                    tmp.clear(); 
                    depth = cur_tmp; 
                }
                tmp.push_back( cur_s->val ); 
                
                if( cur_s->left ){
                    stk.push( cur_s->left ); 
                    skd.push( cur_tmp + 1 ); 
                }
                if( cur_s->right ){
                    stk.push( cur_s->right ); 
                    skd.push( cur_tmp + 1 ); 
                }
            }
            if(tmp.size() > 0){
                if(depth%2 == 0){
                    reverse(tmp.begin(), tmp.end()); 
                }
                ans.push_back( tmp ); 
            }
            
            return ans; 
        }
    };
    

      

  • 相关阅读:
    前端Javascript
    第十一周双闭环控制
    补第九周手绘图
    第十一周仿真作业
    第九周PLECS仿真
    第五六周读书笔记
    PLECS模拟与设计结构-4
    机电传动控制读书笔记-3
    PLECS仿真报告2
    PLECS仿真报告
  • 原文地址:https://www.cnblogs.com/zhang-yd/p/7285276.html
Copyright © 2011-2022 走看看