首页 留言 登录
用数组构建一个二叉树
/*
树:分治和递归的艺术 
*/
#include <bits/stdc++.h> 
using namespace std;
#define MAX_N 1000
char tree[MAX_N]; // 0 表示空节点
// 1.初始化
void initTree(){
    for(int i=0;i<MAX_N;i++){ tree[i] =0;}
} 
// 2.设置根节点
void setRoot(char v) {
    tree[0] = v;
}
// 3.设置左孩子(2*i+1)
void setLeft(int parentIdx,char v) {
    if(tree[parentIdx] == 0) return;//父节点不存在

    int idx = 2 * parentIdx + 1;
    if(idx < MAX_N){
        tree[idx] = v;
    }
}
// 4.设置右孩子(2*i+2) 
void setRight(int parentIdx,char v) {
    if(tree[parentIdx] == 0) return;//父节点不存在

    int idx = 2 * parentIdx + 2;
    if(idx < MAX_N){
        tree[idx] = v;
    }
}

int main(){
    initTree();

    //构建一棵树
    setRoot('A');     //tree(0) = 'A'
    setLeft(0,'B');   //tree(1) = 'B'
    setRight(0,'C');  //tree[2] = 'C'

    // B->D,E
    setLeft(1,'D'); 
    setRight(1,'E');    


    return 0;
} 
上一篇:递归实现 前序遍历一个二叉树(链表实现)
下一篇:排序-选择排序
验证码
评论留言 (0条)