>  기사  >  백엔드 개발  >  PHP는 지그재그 순서로 이진 트리를 인쇄하는 방법을 설명합니다.

PHP는 지그재그 순서로 이진 트리를 인쇄하는 방법을 설명합니다.

jacklove
jacklove원래의
2018-06-30 17:50:151474검색

이 글은 주로 PHP에서 지그재그 순서로 이진 트리를 인쇄하는 방법을 소개합니다. 이진 트리의 스택 탐색과 결합된 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 Get Binary Tree 미러링 방법 설명

링크드 리스트의 마지막 노드부터 K번째 노드를 구하는 PHP 방법 설명

이진 트리를 위에서 아래로 인쇄하는 PHP 방법 설명

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

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