Kĩ thuật chia để trị cũng có thể được áp dụng vào các bài toán mà khi một tác vụ được chia nhỏ thành nhiều hơn hai phần ở mỗi bước. Ví dụ một tác vụ được chia nhỏ thành bốn phần, định nghĩa đệ quy tuần tự có thể là
Int add(int∗s) {
if (number(s)=<4) return (n1+n2+n3+n4); else {
divide(s, s1, s2, s3, s4); /∗Chia s thành 2 phần s1, s2, s3, s4 ∗/
part_sum1 = add(s1); /∗Các lời gọi đệ quy để cộng các danh sách con∗/
part_sum2=add(s2); part_sum3=add(s3); part_sum4=add(s4);
return (part_sum1+part_sum2+part_sum3+part_sum4); }
}
Câym-nhánh được hình thành nếu phép chia là phép chia nhỏ thànhm phần. Cây
Hình 2.7:Quadtree và ứng dụng để chia miền 2-chiều
m-nhánh có những ứng dụng cụ thể riêng.
Trong cây mỗi node cha có bốn node con, gọi là quadtree được ứng dụng để chia các miền 2−chiều thành bốn miền con (Hình...); octree là cây trong đó mỗi node cha có tám node con được ứng dụng trong việc chia không gian 3−chiều đệ quy (Hình...).
Thuật toán xây dựng cây quadtree(octtree được làm tương tự).
Procedure Quad_Tree_Build Quad_Tree=empty
for j=1 to N . . . vòng lặp với tất cả N hạt
Quad_Tree_Insert(j, root) . . . chèn hạt i vào QuadTree endfor
Hình 2.8:Octree và ứng dụng để chia không gian 3-chiều
. . . có 0 hạt nếu các node chị em ruột có 1 hạt
Duyệt cây Quad_Tree xóa bỏ các lá rỗng . . . sử dụng, Breadth First Search
Procedure Quad_Tree_Insert(j, n) . . . Chèn hạt thứ j vào node thứ n trong cây Quad_Tree
if n là node trong . . . n có 4 node con xác định node con c của node n chứa hạt j Quad_Tree_Insert(j, c)
else if n chứa 1 hạt . . . n là node lá
thêm 4 node con của n vào the Quad_Tree chuyển hạt trong n tới node con chứa nó đặt c là node con của n chứa j
Quad_Tree_Insert(j, c) else . . . n rỗng
lưu hạt j ở node n end