题目描述:给点一个二叉树的根节点,返回其中序遍历的结果(Leetcode 94)
/**
* Definition for a binary tree node.
* class TreeNode {
* public $val = null;
* public $left = null;
* public $right = null;
* function __construct($val = 0, $left = null, $right = null) {
* $this->val = $val;
* $this->left = $left;
* $this->right = $right;
* }
* }
*/
class Solution {
// 记录遍历结果
private $result = [];
/**
* @desc 递归
* @param TreeNode $root
* @return Integer[]
*/
function inorderTraversal($root) {
if(!$root) {
return $this->result;
}
$this->help($root);
return $this->result;
}
function help($root) {
if(!$root) {
return;
}
$this->help($root->left);
$this->result[] = $root->val;
$this->help($root->right);
}
/**
* @desc 迭代
* @param TreeNode $root
* @return Integer[]
*/
function inorderTraversal2($root) {
if(!$root) {
return $this->result;
}
$stack = [];
$cur = $root;
while($stack || $cur) {
while($cur) {
array_push($stack, $cur);
$cur = $cur->left;
}
$cur = array_pop($stack);
$this->result[] = $cur->val;
$cur = $cur->right;
}
return $this->result;
}
}