首页 > 编程 > PHP > 正文

php如何实现二叉树的深度计算(附代码)

2020-03-22 18:44:42
字体:
来源:转载
供稿:网友
本篇文章给大家带来的内容是关于php如何实现二叉树的深度计算(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

二叉树的深度:
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

思路:

1.非递归层序遍历
2.使用辅助队列,根结点先入队列
3. 循环判断队列是否为空,如果不为空就继续循环队列里面的每个结点
4. 循环队列时,当前当前结点出队列,把该结点的左右孩子入队列

TreeDepth(tree)    if !tree return 0    array_push(queue,tree);    depth=0    while(!empty(queue)){        ++depth        for i=0;i<queue.size;i++            node=array_pop(queue)            array_push(queue,node->left);            array_push(queue,node->right);    return depth
<?phphtml' target='_blank'>class TreeNode{    var $val;    var $left = NULL;    var $right = NULL;    function __construct($val){        $this->val = $val;    }   }function TreeDepth($tree){        if(!$tree) return 0;        $queue=array();        array_push($queue,$tree);//在数组最后添加元素        $depth=0;        while(!empty($queue)){                $depth++;                $size=count($queue);                    for($i=0;$i<$size;$i++){                        $node=array_shift($queue);//非常重要 删除第一个元素                        if($node->left){                                array_push($queue,$node->left);                        }                           if($node->right){                                array_push($queue,$node->right);                        }                   }           }            return $depth;}$node1=new TreeNode(1);$node2=new TreeNode(2);$node3=new TreeNode(3);$node4=new TreeNode(4);$node5=new TreeNode(5);$node6=new TreeNode(6);$node7=new TreeNode(7);$tree=$node1;$node1->left=$node2;$node1->right=$node3;$node2->left=$node4;$node2->right=$node5;$node4->right=$node6;$node3->left=$node7;var_dump($tree);$dep=TreeDepth($tree);var_dump($dep);

以上就是php如何实现二叉树的深度计算(附代码)的详细内容,更多请关注 其它相关文章!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表