• [PHP]算法- 二叉树的深度的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
    <?php
    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);
  • 相关阅读:
    DOM节点类型
    javascript中的变量、作用域
    this 不同情况指代的对象
    BOM对象节点
    浏览器兼容性
    总结
    javascript事件流讲解和实例应用
    7.20
    7.16总结
    飞机大战
  • 原文地址:https://www.cnblogs.com/taoshihan/p/9757497.html
Copyright © 2020-2023  润新知