一、二叉树

1.定义

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

 

2.创建

以前序序列作为输入

#构造函数,返回根节点
TreeNode* create(int size, int& index, int* series){
    TreeNode* root = nullptr;
    if(index<size && series[index]!=-1){
        root = new TreeNode(series[index]);
        root->left = create(size, ++index, series);
        root->right = create(size, ++index, series);
    }
    return root;
}

#输入数据:前序序列,序列长度,遍历索引
index = 0;
size = 7;
series = new int[size]{2,3,-1,-1,4,-1,-1};
TreeNode* root = solution.create(size,index,series);

 

2.遍历

a)前序遍历      根节点-左子树-右子树

b)中序遍历      左子树-根节点-右子树

c)后序遍历      左子树-右子树-根节点

以前序方式遍历树

void traverse(TreeNode *root){
    if(root != nullptr){
        cout << root->val <<',';
        traverse(root->left);
        traverse(root->right);
    }
}

 

posted @ 2019-09-20 11:52  xmalll  阅读(144)  评论(0编辑  收藏  举报