題目:
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
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...