数据结构MOOC|二叉树的表示

1.链表表示法


struct TreeNode {
     int val;
     TreeNode *left;
     TreeNode *right;
     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 };

2.数组表示法:将二叉树看作完全二叉树


缺点,如果树很稀疏的话,空间浪费比较大。

优点,父子结点、兄弟结点之间通过下标计算可以很方便的找到。

3.结构数组(相当于静态链表)表示法

//结构数组表示二叉树
#define ElementType char
#define Tree int
#define Null -1
struct TreeNode
{
    ElementType Element;
    Tree Left;
    Tree Right;
};


上面两图为同一树的结构数组的不同表示方法。

可以看出,其表示方法不唯一,且树根不一定在下标0号位置。

故涉及到找树根的问题:在Left和Right域中没有出现过的下标位置就是树根。

猜你喜欢

转载自blog.csdn.net/darlingwood2013/article/details/80475874