crack the code interview —— binarytree

来源:互联网 发布:mac设置iphone6铃声 编辑:程序博客网 时间:2024/05/10 01:45
#include <iostream>using namespace std;struct BinaryTreeNode{    int value;    BinaryTreeNode * left;    BinaryTreeNode * right;    BinaryTreeNode(int v)    {        value = v;        left = right = NULL;    }};class BinaryTree{private:    BinaryTreeNode * root;    void preOrder(BinaryTreeNode * node)    {        if (node == NULL)            return;        cout<<node->value<<" ";        preOrder(node->left);        preOrder(node->right);    }    void inOrder(BinaryTreeNode * node)    {        if (node == NULL)            return;        inOrder(node->left);        cout<<node->value<<" ";        inOrder(node->right);    }    void postOrder(BinaryTreeNode * node)    {        if (node == NULL)            return;        postOrder(node->left);        postOrder(node->right);        cout<<node->value<<" ";    }    void insert(BinaryTreeNode * node, int value)    {        if (node == NULL)            return;        if (value < node->value)        {            if (node->left == NULL)            {                node->left = new BinaryTreeNode(value);                return;            }            insert(node->left, value);                    }        else if (value > node->value)        {            if (node->right == NULL)            {                node->right = new BinaryTreeNode(value);                return;            }            insert(node->right, value);        }        else        {            cout<<"insert Error"<<endl;        }    }        void deleteNode(BinaryTreeNode * node)    {        if (node == NULL)            return;        deleteNode(node->left);        deleteNode(node->right);        delete node;    }    bool search(BinaryTreeNode * node, int value)    {        if (node == NULL)            return false;        if (value < node->value)            search(node->left, value);        else if (value > node->value)            search(node->right, value);        else            return true;    }public:    BinaryTree()    {        root = NULL;    }    ~BinaryTree()    {        if (root != NULL)            deleteNode(root);    }    void Insert(int value)    {        if (root == NULL)            root = new BinaryTreeNode(value);        else            insert(root, value);    }    void PreOrder()    {        preOrder(root);        cout<<endl;    }    void InOrder()    {        inOrder(root);        cout<<endl;    }    void PostOrder()    {        postOrder(root);        cout<<endl;    }    bool Search(int value)    {        return search(root, value);    }    };int main(){    BinaryTree b;    b.Insert(2);    b.Insert(4);    b.Insert(1);    b.Insert(3);    b.PreOrder();    b.InOrder();    b.PostOrder();    cout<<b.Search(1)<<endl;    return 0;}

0 0
原创粉丝点击