この記事の内容は、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);
以上がPHPでバイナリツリーの深さ計算を実装する方法(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。