php实现二叉树是一个BST

时间:2015-08-17 10:54:51

标签: php data-structures graph tree binary-search-tree

我正在尝试以不同的方式学习PHP以提高我的技能。这就是问题。有没有办法找出给定的树是否是BST (二叉搜索树)或不在 PHP 我尝试使用C语言。任何人都可以帮助我使用PHP吗? 这是我用C语言编写的代码。

    #include <stdio.h>
    #include <stdlib.h>

    struct node
    {
    int data;
    struct node* left;
    struct node* right;
};

static struct node *prev = NULL; 

/*Function to check whether the tree is BST or not*/
int is_bst(struct node* root)
{
    if (root)
    {
        if (!is_bst(root->left)) //moves towards the leftmost child of the tree and checks for the BST
            return 0;
        if (prev != NULL && root->data <= prev->data)
            return 0;
        prev = root;
        return is_bst(root->right);    //moves the corresponding right child of the tree and checks for the BST
    }
    return 1;
}

struct node* newNode(int data)
{
    struct node* node = (struct node*)malloc(sizeof(struct node));
    node->data = data;
    node->left = NULL;
    node->right = NULL;

    return(node);
}

int main()
{
    struct node *root = newNode(40);
    root->left        = newNode(20);
    root->right       = newNode(60);
    root->left->left  = newNode(10);
    root->left->right = newNode(30);
    root->right->right = newNode(80);
    root->right->right->right = newNode(90);
    if (is_bst(root))
        printf("TREE 1 Is BST");
    else
        printf("TREE 1 Not a BST");
    prev = NULL;
    return 0;
} 

1 个答案:

答案 0 :(得分:0)

如果在PHP中声明/存在类定义和实例,则基本上可以运行相同的算法。

您的PHP代码目前是什么样的?