zoukankan      html  css  js  c++  java
  • tree

    #include <iostream>
    #include <string>
    #include <vector>
    
    using std::cout;
    using std::endl;
    using std::vector;
    using std::string;
    
    namespace chen {
    
    template <typename T>
    class Tree {
    public:
    	Tree(const T& val): val_(val) {}
    	T val() const
    	{return val_;}
    	Tree*& left()
    	{return left_;}
    	Tree*& right()
    	{return right_;}
    
    private:
    	T val_;
    	Tree* left_;
    	Tree* right_;
    }; //Tree
    
    template <typename T>
    Tree<T>* addVal(Tree<T>* root, const T& val)
    {
    	if (!root) {
    		root = new Tree<T>(val);
    		return root;
    	}
    	if (root->val() > val)
    		root->left() = addVal(root->left(), val);
    	else
    		root->right() = addVal(root->right(), val);
    
    	return root;
    }
    
    template <typename T>
    void printTree(Tree<T>* root)
    {
    	if (root) {
    		printTree(root->left());
    		cout << root->val() << endl;
    		printTree(root->right());
    	}
    }
    
    template <typename T>
    void freeTree(Tree<T>** root)
    {
    	if (*root) {
    		freeTree(&(*root)->right());
    		freeTree(&(*root)->right());
    		delete *root;
    		*root = nullptr;
    	}
    }
    
    void TreeTest()
    {
    	vector<int> nums = {100, 78, 123, 45, 98, 113, 189, 234, 1, 19, 54, 100, 123, 654, 98};
    
    	chen::Tree<int>* root = 0;
    	for (auto i : nums) {
    		root = addVal(root, i);
    	}
    	printTree(root);
    	freeTree(&root);
    	printTree(root);
    }
    
    } //namespace chen
    
    
    放弃很容易,但是坚持真的很酷,静享此刻,强风吹拂
  • 相关阅读:
    判断微信浏览器
    文章迁移
    ECharts使用—折线图动态加载
    vue-cli入门
    gulp使用详解
    gulp使用入门
    Chrome扩展插件流程
    div界面元素生成图片
    xss攻击与防御
    bootstrap-table使用详解
  • 原文地址:https://www.cnblogs.com/joker8/p/15516532.html
Copyright © 2011-2022 走看看