Given a binary tree, return the postorder traversal of its nodes' values.
给定一个二叉树,返回其节点值的后序遍历(左右中的顺序)
For example:
Given binary tree{1,#,2,3},
1
\
2
/
3
return[3,2,1].
Note: Recursive solution is trivial, could you do it iteratively?
递归方法不值得提,非递归方法来解决这个问题
三种遍历方法可以参考
https://blog.csdn.net/less_cold/article/details/77877194
<?php
class TreeNode {
public $left = null;
public $right = null;
public $val;
public function __construct($val) {
$this->val = $val;
}
}
function order($headNode) {
$arrNode = array();
array_push($arrNode,$headNode);
$pre = null;
while (count($arrNode) > 0) {
$node = end($arrNode);
if (($node->right == null && $node->left == null) || ($pre != null && ($pre == $node->right || $pre == $node->left))) {
array_pop($arrNode);
$pre = $node;
print $node->val."\n";
} else {
if ($node->right !== null) {
array_push($arrNode,$node->right);
}
if ($node->left !== null) {
array_push($arrNode,$node->left);
}
}
}
}
$node1 = new TreeNode(1);
$node2 = new TreeNode(2);
$node3 = new TreeNode(3);
$node4 = new TreeNode(4);
$node5 = new TreeNode(5);
$node6 = new TreeNode(6);
$node1->left = $node2;
$node1->right = $node3;
$node2->right = $node4;
$node3->left = $node5;
$node3->right = $node6;
order($node1);