用c语言求二叉树最后的节点
时间: 2024-05-05 21:18:12 浏览: 9
好的,您可以参考以下代码实现:
```
// 定义二叉树结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 递归求解函数
TreeNode* getLastNode(TreeNode* root)
{
// 如果当前节点为空,则返回NULL
if (root == NULL) {
return NULL;
}
// 如果当前节点的左右子节点都为空,则返回当前节点
if (root->left == NULL && root->right == NULL) {
return root;
}
// 如果当前节点的右子节点为空,则递归左子节点
if (root->right == NULL) {
return getLastNode(root->left);
}
// 如果当前节点的右子节点不为空,则递归右子节点
return getLastNode(root->right);
}
// 主函数
int main()
{
// 创建二叉树
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = 1;
root->left = (TreeNode*)malloc(sizeof(TreeNode));
root->left->val = 2;
root->left->left = NULL;
root->left->right = NULL;
root->right = (TreeNode*)malloc(sizeof(TreeNode));
root->right->val = 3;
root->right->left = NULL;
root->right->right = (TreeNode*)malloc(sizeof(TreeNode));
root->right->right->val = 4;
root->right->right->left = NULL;
root->right->right->right = NULL;
// 求解最后的节点
TreeNode* lastNode = getLastNode(root);
printf("%d", lastNode->val);
return 0;
}
```
运行以上代码,会输出二叉树最后的节点的值为4。