LeetCode Binary Tree Preorder Traversal
2016-02-02 17:46
232 查看
C语言,递归算法。
非递归算法。
这两种方法,我基本没怎么改代码,相比于中序遍历,只是更改了读数据的顺序,具体可以细细品味。
2016/2/2
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ /** * Return an array of size *returnSize. * Note: The returned array must be malloced, assume caller calls free(). */ int *nums=NULL,i=0; void preorder(struct TreeNode* root) { nums = (int *)realloc(nums, sizeof(int)*(i+1)); if(root){ nums[i++]=root->val; preorder(root->left); preorder(root->right); } } int* preorderTraversal(struct TreeNode* root, int* returnSize) { i=0; if(!root) return NULL; else{ nums=(int *)malloc(sizeof(int)); preorder(root); *returnSize=i; return nums; } }
非递归算法。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ /** * Return an array of size *returnSize. * Note: The returned array must be malloced, assume caller calls free(). */ int* preorderTraversal(struct TreeNode* root, int* returnSize) { struct TreeNode** stack=NULL,*pre=root; *returnSize=0; int i=0,j=0,*nums=NULL; stack = (struct TreeNode **)malloc(sizeof(struct TreeNode *)); nums = (int *)malloc((j+1)*sizeof(int)); while(i||pre) { if(pre){ nums = (int *)realloc(nums, sizeof(int)*(j+1)); nums[j++]=pre->val; *returnSize+=1; stack = (struct TreeNode **)realloc(stack, sizeof(struct TreeNode *)*i+1); stack[i++]=pre; pre=pre->left; } else{ pre=stack[--i]; pre=pre->right; } } return nums; }
这两种方法,我基本没怎么改代码,相比于中序遍历,只是更改了读数据的顺序,具体可以细细品味。
2016/2/2
相关文章推荐
- 获取当前td所在的行和列位置,以及td中input的值
- SQL2000和SQL2005和SQL2008同时安装问题
- 根据两点间的经纬度计算距离
- android的感谢
- Linux---挂载命令
- MySQL教程-应用篇-连接查询
- Anaconda 管理 packages
- DelphiXE8新建AVD
- 如何处理服务器SSL收到了一个弱临时Diffie-Hellman 密钥?
- UESTC 1272 Final Pan's prime numbers
- Linux中find批量删除空文件及空文件夹脚本
- UVA1220Party at Hali-Bula(树的最大独立集 + 唯一性判断)
- 我写出了一个看起来有点高大上的页面!!!
- 8.Java 加解密技术系列之 PBE
- 神经网络
- 河南第四届ACM省赛(序号互换)
- Android中Gson解析详解json3
- 不要总说自己是加班狗,狗从来不加班
- LightOJ--1152--Hiding Gold(二分图奇偶建图)(好题)
- 关于 tomcat 集群中 session 共享的三种方法