博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cc++ leetcode 257. 二叉树的所有路径
阅读量:3966 次
发布时间:2019-05-24

本文共 1350 字,大约阅读时间需要 4 分钟。

c/c++ leetcode 257. 二叉树的所有路径

一.题目描述

难度简单308

给定一个二叉树,返回所有从根节点到叶子节点的路径。

说明: 叶子节点是指没有子节点的节点。

示例:

输入:   1 /   \2     3 \  5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3

解法一: 递归

我的代码有些问题主要的功能实现了就在第二条路径之后的路径根节点没有办法打印出来,想了半天没有想出来,看的题解,我在这位老哥的代码上改了一下,链接:https://leetcode-cn.com/problems/binary-tree-paths/solution/257er-cha-shu-de-suo-you-lu-jing-by-pj2fgpd1kp/

vector
binaryTreePaths(TreeNode* root) { vector
res; //termination if (root == NULL) return res; // process current logic 当前一层的逻辑过程 if (root -> right == NULL && root -> left == NULL) { res.push_back(to_string(root -> val)); return res; } //dill down // root -> left 和 root ->right 也是当前层的逻辑过程 vector
lefts = binaryTreePaths(root -> left); vector
rights = binaryTreePaths(root -> right); // restore current status 清理当前层的资源 lefts.insert(lefts.end(),rights.begin(),rights.end()); for (int i = 0; i < lefts.size(); i++) { res.push_back(to_string(root -> val) + "->" + lefts[i]); } return res; }

时空复杂度分析

时间复杂度: 访问一次二叉树的全部节点为O(N) ; N为节点的个数;

空间复杂度::最好情况下: 这颗二叉搜索树是完全平衡的,每个子树根节点都有二个子节点为O(logn) 它是开辟N个栈空间但它只有等到左子树递归完了返回时再开辟右子树;

最坏情况下: 这个二叉搜索树是不完全平衡的,每个子树根节点都只有一个子节点,需要开辟N个栈空间为O(N);

转载地址:http://ddyki.baihongyu.com/

你可能感兴趣的文章
Android 网络编程 初级入门(一)
查看>>
No enclosing instance of type Demo06 is accessible.
查看>>
计算机发展中的两大“杀手”
查看>>
MDK5(Keil for ARM) 工程建立时遇到的问题集锦
查看>>
Ubuntu下安装GTK+及Glade开发C应用界面
查看>>
assertion 'GTK_IS_WIDGET (widget)' failed的解决办法
查看>>
Ubuntu登录管理员账户时,输入密码后一直在登录界面循环
查看>>
Linux下的定时器以及POSIX定时器:timer_settime()
查看>>
POSIX定时器timer_create()以及线程中的gettid() 和pthread_self()
查看>>
c /c++中日期和时间的获取:strftime()函数
查看>>
C语言 回调函数
查看>>
c语言swap(a,b)值交换的4种实现方法
查看>>
C++中class类 的 构造函数、析构函数
查看>>
C++小知识点
查看>>
【转载】zedboard中PL_GPIO控制(8个sw、8个leds)
查看>>
zedboard烧写程序到FLASH,用于QSPI Flash启动
查看>>
软件工程师,你必须知道的20个常识
查看>>
常用STL算法2_查找
查看>>
常用STL算法3_排序
查看>>
常用STL算法4_拷贝和替换
查看>>