この記事では主に、バイナリ ツリーをジグザグ順序で出力する PHP の方法を紹介し、PHP の関連操作スキルとバイナリ ツリーのスタック トラバーサルを組み合わせます。この記事の例では、PHP でバイナリ ツリーを印刷する実装について説明します。バイナリ ツリーをジグザグの順序で印刷するメソッドです。参考までに皆さんと共有してください。詳細は次のとおりです。
質問バイナリ ツリーを出力する関数を実装してください。ジグザグ形式、つまり、最初の行は次のようになります。左から右に印刷され、2 番目の層は右から左に印刷され、3 行目は左から右に印刷され、他の行も同様です。
#ソリューションのアイデア2 つのスタックの使用
実装コード
<?php /*class TreeNode{ var $val; var $left = NULL; var $right = NULL; function __construct($val){ $this->val = $val; } }*/ function MyPrint($pRoot) { if($pRoot == NULL) return []; $current = 0; $next = 1; $stack[0] = array(); $stack[1] = array(); $resultQueue = array(); array_push($stack[0], $pRoot); $i = 0; $result = array(); $result[0]= array(); while(!empty($stack[0]) || !empty($stack[1])){ $node = array_pop($stack[$current]); array_push($result[$i], $node->val); //var_dump($resultQueue);echo "</br>"; if($current == 0){ if($node->left != NULL) array_push($stack[$next], $node->left); if($node->right != NULL) array_push($stack[$next], $node->right); }else{ if($node->right != NULL) array_push($stack[$next], $node->right); if($node->left != NULL) array_push($stack[$next], $node->left); } if(empty($stack[$current])){ $current = 1-$current; $next = 1-$next; if(!empty($stack[0]) || !empty($stack[1])){ $i++; $result[$i] = array(); } } } return $result; }
#興味があるかもしれない記事:
PHP でバイナリ ツリー イメージを取得する方法の説明リンクされたリストの最後から K 番目のノードを取得する PHP のメソッドの説明
以上がPHP はバイナリ ツリーをジグザグ順序で出力する方法を説明しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。