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;
    }
  • 相关阅读:
    URAL 2034 : Caravans (二分最短路)
    Qt程序的字符编码方式
    Qt程序国际化
    Qt5 + msvc2015编译器 环境配置 (不安装VS)
    error: undefined reference to `Dialog::on_pushButton_clicked()'在程序代码的后台程序代码出现问题
    Qt的inherits()函数判断qt控件是否为某个类实例
    WPS使用书签跳转到指定的文档位置
    Qt error ------ 出现Error
    环境名词
    source insight 联想出Qt库函数
  • 原文地址:https://www.cnblogs.com/zhongzhiqiang/p/5791072.html
Copyright © 2011-2022 走看看