leetcode 257. 二叉树的所有路径(Java版)
生活随笔
收集整理的這篇文章主要介紹了
leetcode 257. 二叉树的所有路径(Java版)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
https://leetcode-cn.com/problems/binary-tree-paths/
題解
二叉樹前序遍歷即可
- 每走到一個節點,將當前節點的值拼到路徑字符串 str 中。
- 如果走到的是葉子結點,說明當前路徑已經結束。將拼好的字符串 str 加入到 list 中。
前序遍歷完成后,得到的 list 即為所求。
復雜度分析
因為是前序遍歷,所以之間復雜度 O(n),空間復雜度O(h)。
其中,n 表示二叉樹節點個數,h 表示二叉樹深度。
代碼
為了可讀性,本文直接用 “+” 做字符串拼接。實際上,用 StringBuilder 效率更好。
public class Solution {public List<String> binaryTreePaths(TreeNode root) {List<String> list = new ArrayList<>();preOrder(root, "", list);return list;}/*** 前序遍歷*/public void preOrder(TreeNode node, String str, List<String> list) {if (node == null) {return;}if (str != "") str += ("->");if (node.left == null && node.right == null) {list.add(str + node.val);return;}preOrder(node.left, str + node.val, list);preOrder(node.right, str + node.val, list);} }總結
以上是生活随笔為你收集整理的leetcode 257. 二叉树的所有路径(Java版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 左神算法:二叉树的按层打印与ZigZag
- 下一篇: leetcode 258. 各位相加(J