二叉树中从根结点到叶子结点的所有路径(递归实现)
来源:互联网 发布:淘宝网卡洛琳号船模型 编辑:程序博客网 时间:2024/04/27 21:12
假设我们要输出二叉树中所有从根节点到叶子节点的所有路径,我们采用前序遍历二叉树的思想,每遇到一个节点,我们把该节点存储在数组中,然后判断该节点是否为叶子节点,如果是叶子节点,我们输出从根节点到该叶子节点的路径,并且在数组相应位置置空。如果不是叶子节点,我们递归进入该节点的非空子节点中。#include<iostream>#include<vector>#include<algorithm>#include<stack>using namespace std;//树节点结构struct BinaryTreeNode{BinaryTreeNode *left;BinaryTreeNode *right;char value;};//存储路径的数组vector<char> path(10, '@');//创建二叉树void createTree(BinaryTreeNode* &root){char val;cin >> val;if (val != '@'){root = new BinaryTreeNode;root->value = val;root->left = NULL;root->right = NULL;createTree(root->left);createTree(root->right);}}//递归实现输出从根节点到叶子结束的所有路径void printPath(BinaryTreeNode *root, int pos){if (root == NULL)return;path[pos] = root->value;if (root->left == NULL && root->right == NULL){auto it = path.begin();auto end = find(path.begin(), path.end(), '@');while (it != end){cout << *it++ << " ";}cout << endl;}else{if (root->left != NULL){printPath(root->left, pos + 1);}if (root->right != NULL){printPath(root->right, pos + 1);}}path[pos] = '@';}int main(void){BinaryTreeNode *root = NULL;createTree(root);printPath(root, 0);system("pause");return 0;}//存储所有的路径vector<vector<char>> allPath;//某条路径vector<char> path;void findAllPath(BinaryTreeNode *root){if (root == NULL)return;if (root->left == NULL && root->right == NULL){path.push_back(root->value);allPath.push_back(path);}else{path.push_back(root->value);if (root->left)findAllPath(root->left);if (root->right)findAllPath(root->right);}path.pop_back();}
0 0
- 二叉树中从根结点到叶子结点的所有路径(递归实现)
- 二叉树中从根结点到叶子结点所有路径(非递归实现)
- 输出二叉树中所有从根结点到叶子结点的路径
- 输出二叉树中所有从根结点到叶子结点的路径
- 输出二叉树中所有从根结点到叶子结点的路径
- !求二叉树中从根结点到叶子结点的路径
- 打印从根结点到叶子结点的路径(递归)
- 【31】给定一个二叉树打印出所有从根结点到叶子结点路径和为 k 的路径
- 【31】给定一个二叉树打印出所有从根结点到叶子结点路径和为 k 的路径
- 打印二叉树根结点到所有叶子结点的路径
- java 遍历树结点 同时保留所有从根到叶子结点的路径
- 根结点到所有叶子结点的路径问题
- c++输出二叉树叶子结点并输出叶子结点到根结点的路径长度
- 【Leetcode】Binary Tree Paths 二叉树根结点到所有叶子结点的路径
- POJ 2499 求二叉树结点到根结点的路径长度 递归 二叉树
- 给定一个二叉树,节点值为0-9,从根节点到叶子结点组成一个数,求二叉树所有组成的数的和
- java 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
- 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
- 关于Linux下解压文件文件名乱码问题
- 我的爱妻为我们的生活增添了一个他
- jetty-debug - 配置
- iOS获取设备外网IP的方法
- PHP5的composer学习从入门到精通
- 二叉树中从根结点到叶子结点的所有路径(递归实现)
- [Sencha ExtJS & Touch] 在Sencha(Extjs/Touch)应用程序中使用plugins(插件)和mixins(混入)
- VS2012+EF6+Mysql 兼容mono运行的配置
- android jni里面找不到某个函数的定义
- 【经典转载】Linux进程学习系列之一 基本概念
- 系统地图定位使用
- 九度题目1183守型数
- Hibernate实例讲解
- 求两个数的和是否和给的目标值相等?