做区位分析底图的网站常平镇网站仿做
Problem: 257. 二叉树的所有路径
文章目录
- 题目描述
 - 思路
 - 复杂度
 - Code
 
题目描述
思路
遍历思想(利用二叉树的先序遍历)
利用先序遍历的思想,我门用一个List变量path记录当前先序遍历的节点,当遍历到根节点时,将其添加到另一个List变量res中,当递归往回归的时候删除当前path中的最后一个值
复杂度
时间复杂度:
O ( n ) O(n) O(n);其中 n n n为二叉树的节点个数
空间复杂度:
O ( h ) O(h) O(h);其中 h h h为二叉树的高度
Code
/*
/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public List<String> binaryTreePaths(TreeNode root) {traverse(root);return res;}// Record the traverse recursive pathLinkedList<String> path = new LinkedList<>();// Records all paths from the root to the leaf nodeLinkedList<String> res = new LinkedList<>();private void traverse(TreeNode root) {if (root == null) {return;}// leaf rootif (root.left == null && root.right == null) {path.addLast(root.val + "");// Add this path to resres.addLast(String.join("->", path));path.removeLast();return;}// Preorder traversal positionpath.addLast(root.val + "");// Recursively traverse the left and right subtreestraverse(root.left);traverse(root.right);// Post order traversal positionpath.removeLast();}
}


