257. 二叉树的所有路径-leetcode
1 题目
2 代码
/** * Definition for a binary tree node. * class TreeNode { * public $val = null; * public $left = null; * public $right = null; * function __construct($value) { $this->val = $value; } * } */ class Solution { private $ret = []; /** * @param TreeNode $root * @return String[] */ function binaryTreePaths($root) { $this->ret = []; if (empty($root)) { return $this->ret; } $path = $root->val; $this->dfs($root, $path, 1); return $this->ret; } function dfs($root, $path, $isRoot = 0) { if (! $isRoot) { $path = $path."->".$root->val; } if (empty($root->left) && empty($root->right)) { $this->ret[] = strval($path); } if ($root->left) { $this->dfs($root->left, $path); } if ($root->right) { $this->dfs($root->right, $path); } } }
3 思路
深度优先遍历,或者广度优先遍历都可以
我这里加了一个函数的变量 isRoot,有点冗余,可以通过优化去掉