>  기사  >  백엔드 개발  >  지그재그 순서로 이진 트리를 인쇄하는 PHP 방법

지그재그 순서로 이진 트리를 인쇄하는 PHP 방법

jacklove
jacklove원래의
2018-05-22 16:53:111409검색

이 글에서는 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 "
"; 
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 중국어 웹사이트를 참고하세요.

관련 권장 사항:

php nginx 실시간 출력 구현 방법

연결된 목록에서 링의 항목 노드를 찾는 PHP 구현

PHP 클래스 SoapClient 처리 방법을 찾을 수 없음

위 내용은 지그재그 순서로 이진 트리를 인쇄하는 PHP 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.