二叉樹構造

2021-07-04 14:09:46 字數 1092 閱讀 3424

題目:

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

public: 

int findvalptr(vectorarr, int val)

}return i;

}/* 查詢子樹的根節點 */

public:

void findsubtreenode(int type, struct treenode* p_node, vectorpre_arr, int pre_start, int pre_end,

vectormid_arr, int mid_start, int mid_end)

else

ptr = findvalptr(mid_arr, root_n->val);

l_count = ptr - mid_start;

r_count = mid_end - ptr;

type ? (p_node->right = root_n) : (p_node->left = root_n);

findsubtreenode(0, root_n, pre_arr, pre_start+1, pre_start+l_count, mid_arr, mid_start, ptr-1);

findsubtreenode(1, root_n, pre_arr, pre_start+l_count+1, pre_end, mid_arr, ptr+1, mid_end);

}public:

struct treenode* reconstructbinarytree(vectorpre,vectorin)

ptr = findvalptr(in, root_n->val);

findsubtreenode(0, root_n, pre, 1, ptr, in, 0, ptr-1);

findsubtreenode(1, root_n, pre, ptr+1, pre.size()-1, in, ptr+1, in.size()-1);

return root_n;

}

構造二叉樹

題目 根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7 理解從前序中可以直接找到根節點,然後從中序中找到這個根節點並...

構造二叉樹

例 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 二叉樹 3 9 20 15 7 definition for a binary tree node.struct treenode class solution treenode buildtr...

構造二叉樹

105.從前序與中序遍歷序列構造二叉樹 根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7 definition fo...