这三道OJ题解题思路类似,你只要会其中一道,其它两道也就会了
一、二叉树的前序遍历
题目难度:简单
1.1 题目描述
给你二叉树的根节点 root
,返回它节点值的 前序 遍历。
LeetCode链接:144. 二叉树的前序遍历 - 力扣(LeetCode)
1.2 解题思路
递归遍历
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
// 写一个函数来计算树的节点个数
int TreeSize(struct TreeNode* root)
{
if(root == NULL)
{
return 0;
}
return 1 + TreeSize(root->left) + TreeSize(root->right);
}
// 写一个子函数来前序遍历
void _preorderTraversal(struct TreeNode* root, int* arr, int* pi)
{
// 先判断当前节点是否为空
if(root == NULL)
{
return;
}
// 前序遍历二叉树的节点值依次放入数组arr中
arr[(*pi)] = root->val;
(*pi)++; // 数组下标+1
_preorderTraversal(root->left, arr, pi);
_preorderTraversal(root->right, arr