二叉树的递归插入

/*********************二叉树的递归插入******************/
template<class Type>
class TreeNode
{
public:
    Type data;
    TreeNode *left;
    TreeNode *right;
    TreeNode(Type value, TreeNode *l = nullptr, TreeNode *r = nullptr) :data(value), left(l), right(r){}
};
template<class Type>
class Tree
{
private:
    TreeNode<Type> *root;
    void visit(TreeNode<Type> *tree);
    void insert(Type key, TreeNode<Type> *&leaf);
    void preOrder(TreeNode<Type> *tree);
public:
    Tree();
    ~Tree();
    void insert(Type key);
    void preOrder();
};
template<class Type>
void Tree<Type>::visit(TreeNode<Type> *tree)
{
    cout << tree->data << " ";
}
template<class Type>
void Tree<Type>::preOrder(TreeNode<Type> *tree)
{
    if (tree != nullptr)
    {
        visit(tree);
        preOrder(tree->left);
        preOrder(tree->right);
    }
}
template<class Type>
void Tree<Type>::preOrder()
{
    preOrder(this->root);
}
template<class Type>
Tree<Type>::Tree()
{
    cout << "构造函数" << endl;
    this->root = nullptr;
}
template<class Type>
Tree<Type>::~Tree()
{
    cout << "析构函数" << endl;
}
//插入节点
template<class Type>
void Tree<Type>::insert(Type key, TreeNode<Type> *&leaf)
{
    if (leaf == nullptr)
        leaf = new TreeNode<Type>(key, nullptr, nullptr);
    else if (key < leaf->data)
        insert(key, leaf->left);
    else if (key>leaf->data)
        insert(key, leaf->right);
}
template<class Type>
void Tree<Type>::insert(Type key)
{
    insert(key, this->root);
}
//测试程序
int main()
{
    Tree<int> tre;

    tre.insert(10);
    tre.insert(6);
    tre.insert(14);
    tre.insert(5);
    tre.insert(8);
    tre.insert(11);
    tre.insert(18);
    tre.preOrder();
    cout << endl;
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值