Binary Tree Paths
2015-08-20 19:31
399 查看
Given a binary tree, return all root-to-leaf paths.For example, given the following binary tree:
1 / \ 2 3 \ 5All root-to-leaf paths are:
["1->2->5", "1->3"]
/* use recursion to traverse every node(DFS),the variable 'i' is important here!* use 'path[]' to save the current path* use 'i' to show current node's position of the path[] */void pathRecur(struct TreeNode *root, char *path, int i, char **retArr, int *numArr){int j;j = sprintf(path + i, "%s", "->");i += j;j = sprintf(path + i, "%d", root -> val);i += j;if(root -> left == NULL && root -> right == NULL){retArr[*numArr] = (char *)malloc(sizeof(char) * (i - 1));sprintf(retArr[*numArr], "%s", path + 2);*numArr += 1;}if(root -> left != NULL){/* 'i' wouldn't change in the function,thus guarantee another root-to-leaf* path[] starts at the right place as it continues to check right subtree */pathRecur(root -> left, path, i, retArr, numArr);}if(root -> right != NULL){pathRecur(root -> right, path, i, retArr, numArr);}}char** binaryTreePaths(struct TreeNode* root, int* returnSize) {if(root == NULL){*returnSize = 0;return NULL;}char **retArr =(char **)malloc(sizeof(char *) * 1000);int numArr = 0;char path[1000];int i = 0;pathRecur(root, path, i, retArr, &numArr);*returnSize = numArr;return retArr;}
相关文章推荐
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言内存对齐实例详解
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- 使用C语言详解霍夫曼树数据结构
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言查找数组里数字重复次数的方法
- C语言泛型编程实例教程
- C语言中使用lex统计文本文件字符数
- C语言进制转换代码分享
- 基于C语言fflush()函数的使用详解
- C语言单链队列的表示与实现实例详解
- 关于C语言除0引发的思考
- 深入分析C中不安全的sprintf与strcpy
- Lua教程(四):在Lua中调用C语言、C++的函数