您的位置:首页 > 编程语言 > C语言/C++

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
\
5
All 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;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言 leetcode