이번에는 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 중국어 웹사이트의 기사!
추천 도서:
PHP 클래스 SoapClient를 찾을 수 없는 문제와 해결 방법
에서 mongoDB 싱글톤 모드 작업 클래스를 구현하는 단계에 대한 자세한 설명위 내용은 PHP에서 지그재그 순서를 사용하여 이진 트리를 인쇄하는 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!