이 글은 주로 PHP에서 지그재그 순서로 이진 트리를 인쇄하는 방법을 소개하고, 이진 트리의 스택 순회와 결합된 PHP의 관련 작업 기술을 포함하고 있어 모두에게 도움이 되기를 바랍니다.
Question
이진 트리를 지그재그 패턴으로 인쇄하는 함수를 구현해 주세요. 즉, 첫 번째 줄은 왼쪽에서 오른쪽으로, 두 번째 레이어는 오른쪽에서 왼쪽으로, 세 번째 줄은 인쇄됩니다. 왼쪽부터 인쇄됩니다. 오른쪽부터 인쇄합니다. 다른 줄도 마찬가지입니다.
솔루션
두 개의 스택 사용
구현 코드
<?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 구현 순회 이진 트리 작업 예제
JavaScript는 이진 트리의 선순, 순순 및 후순 순회 방법을 구현합니다
위 내용은 PHP에서 이진 트리의 순차 인쇄를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!