zoukankan      html  css  js  c++  java
  • 算法笔记 --- Tree Travers

    #include <iostream>
    #include <vector>
    #include <queue>
    using namespace std;
    
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };
    class TreePrinter {
    public:
        vector<vector<int> > printTree(TreeNode* root) {
            // write code here
            vector< vector<int> > res_print;
            
            if(!root){
                return res_print;
            }
            queue<TreeNode> node_queue;
            vector<int> node_print_tmp;
            node_queue.push(*root);
            TreeNode last(0), nlast(0);
            last = *root;
            do{
      
                TreeNode node_tmp = node_queue.front();
                node_queue.pop();
                node_print_tmp.push_back(node_tmp.val);
                cout<<"node "<<node_tmp.val<<" is added."<<endl;
                
                if(node_tmp.left){
                    node_queue.push(*node_tmp.left);
                    nlast = *(node_tmp.left);
                }
                // cout<<"last: "<<last.val<<"# nlast: "<<nlast.val<<endl;
                if(node_tmp.right){
                    node_queue.push(*node_tmp.right);
                    nlast = *(node_tmp.right);
                }
                // cout<<"last: "<<last.val<<"# nlast: "<<nlast.val<<endl;
                if(node_tmp.val == last.val){
                    cout<<"###"<<endl;
                    cout<<"node_print_tmp:"<<endl;
                    for(int i = 0; i < node_print_tmp.size(); i++){
                        cout<<node_print_tmp.at(i)<<" ";
                    }
                    cout<<endl;
                    res_print.push_back(node_print_tmp);
                    node_print_tmp.clear();
                    last = nlast;
                }
                // cout<<"last: "<<last.val<<"# nlast: "<<nlast.val<<endl;
    
            }while(!node_queue.empty());
            
            return res_print;
        }
    };
    int main()
    {
        TreeNode node0(0), node1(1), node2(2), node3(3), node4(4);
        TreeNode node5(5), node6(6), node7(7), node8(8), node9(9);
        TreeNode node10(10), node11(11), node12(12), node13(13), node14(14), node15(15);
        node0.left = &node1, node0.right = &node2;
        node1.left = &node3, node1.right = &node4;
        node2.left = &node5, node2.right = &node6;
        node3.left = &node7, node3.right = &node8;
        node4.left = &node9;
        
        TreePrinter printerTree;
        vector< vector<int> > res = printerTree.printTree(&node0);
        cout<<"res:"<<endl;
        for(int i = 0; i < res.size(); i++){
            for(int j = 0; j < res.at(i).size(); j++){
                cout<<res.at(i).at(j)<<" ";
            }
            cout<<endl;
        }
        
        return 0;
    }
  • 相关阅读:
    H.264 RTP PAYLOAD 格式
    ARM:移动GPU往PC GPU效能迈进
    汪墩一中复校设想
    jconsole 和jvisualVM 监控远程 spring boot程序
    jenkins 登录远程机器并执行脚本,脚本中有后台执行的程序无法执行解决方法。
    linux下的抓包工具tcpdump
    adb logcat查看某个进程的输出日志
    Flask-SQLAlchemy 中多表链接查询(不使用外键)
    使用cnpm 安装vue.js
    Jmeter在非GUI环境下传递参数(命令行&Jenkins配置)
  • 原文地址:https://www.cnblogs.com/zhongzhiqiang/p/5791072.html
Copyright © 2011-2022 走看看