根據一個輸入資料構造二叉樹和連結串列資料結構的方法(c++)

weixin_32895669發表於2020-11-01

根據一個輸入資料構造二叉樹和連結串列資料結構的方法(c++)

單向連結串列

struct ListNode {
    int val;
     ListNode *next;
     ListNode(int x) : val(x), next(NULL) {}
 };
ListNode* BuildList(vector<string> list, int start)
{
    if (list[start] == "null") {
        return NULL;
    }

    ListNode* root = new ListNode(atoi(list[start].c_str()));

    int node = start + 1;
    if (node > list.size() - 1) {
        root->next = NULL;
    }
    else {
        root->next = BuildList(list, node);
    }

    return root;
}

二叉樹

struct TreeNode {
	int val;
	TreeNode *left;
	TreeNode *right;
	TreeNode(int x) : val(x), left(NULL), right(NULL) {}
	
};
//list [0,1,null,2,3]
TreeNode* BuildTree(vector<string> list, int start)
{
	if (list[start] =="null") {
		return NULL;
	}

	TreeNode* root = new TreeNode(atoi(list[start].c_str()));

	int lnode = 2 * start + 1;
	int rnode = 2 * start + 2;
	if (lnode > list.size() - 1) {
		root->left = NULL;
	}
	else {
		root->left = BuildTree(list, lnode);
	}

	if (rnode > list.size() - 1) {
		root->right = NULL;
	}
	else {
		root->right = BuildTree(list, rnode);
	}

	return root;
}

 

相關文章