php如何实现二叉树的创建(代码实例)

来源:不言 发布时间:2018-11-21 11:47:28 阅读量:784

本篇文章给大家带来的内容是关于php如何实现二叉树的创建(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1、利用递归的原理,只不过在原来打印结点的地方,改成了生成结点,给结点赋值的操作
if(ch=='#'){*T=NULL;}else{malloc();(*T)->data=ch;createFunc((*T)->lchild);createFunc((*T)->rchild);}

2.前序遍历:先访问根结点,前序遍历左子树,前序遍历右子树;中左右

3.将二叉树中每个结点的空指针引出一个虚结点,其值为特定值#,处理二叉树为原二叉树的扩展二叉树,扩展二叉树做到一个遍历序列确定一棵二叉树

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

<?php

class BinTree{

        public $data;

        public $left;

        public $right;

}

//前序遍历生成二叉树

function createBinTree(){

        $handle=fopen("php://stdin","r");

        $e=trim(fgets($handle));

        if($e=="#"){

                $binTree=null;

        }else{

                $binTree=new BinTree();

                $binTree->data=$e;

                $binTree->left=createBinTree();

                $binTree->right=createBinTree();

        }

        return $binTree;

   

$tree=createBinTree();

   

var_dump($tree);

  

#

object(BinTree)#1 (3) {

  ["data"]=>

  string(1) "A"

  ["left"]=>

  object(BinTree)#2 (3) {

    ["data"]=>

    string(1) "B"

    ["left"]=>

    NULL

    ["right"]=>

    object(BinTree)#3 (3) {

      ["data"]=>

      string(1) "D"

      ["left"]=>

      NULL

      ["right"]=>

      NULL

    }

  }

  ["right"]=>

  object(BinTree)#4 (3) {

    ["data"]=>

    string(1) "C"

    ["left"]=>

    NULL

    ["right"]=>

    NULL

  }

}


标签: PHP
分享:
评论:
你还没有登录,请先