📅  最后修改于: 2023-12-03 15:06:33.743000             🧑  作者: Mango
二叉树是一种常用的树形结构,具有广泛的应用。常见的构造方式有顺序存储和链式存储两种。其中,链式存储方式最简单的一种是链表表示法。链表表示法将二叉树的每个节点表示为一个结构体,该结构体包含一个指向左子树的指针和一个指向右子树的指针。本文介绍如何从链表表示构造完整的二叉树。
给定一个二叉树的链表表示法,如何构造出该二叉树的完整表示法。
二叉树的链表表示法包含一个指向左子树的指针和一个指向右子树的指针。因此,我们可以通过遍历链表来构造二叉树的完整表示法。具体实现如下:
具体实现代码如下:
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x): val(x), left(NULL), right(NULL) {}
};
TreeNode *constructFromList(ListNode *head) {
if (head == NULL) return NULL;
TreeNode *root = new TreeNode(head->val);
root->left = constructFromList(head->next);
root->right = constructFromList(head->next);
return root;
}
本文介绍了如何从链表表示构造出完整的二叉树。具体实现中,通过遍历链表递归构造左右子树,然后将左右子树根节点指针赋值给父节点的指针,最终构造出完整的二叉树。这种算法的时间复杂度为O(n),其中n为二叉树节点个数。