【題目】定義二叉樹節點如下:
public
static
class
node
}
乙個陣列的maxtree定義如下。
【要求】給定乙個沒有重複元素的陣列arr,寫出生成這個陣列的maxtree的函式,要求如果陣列長度為n,則時間複雜度為o(n)、額外空間複雜度為o(n)。
思路:以下列原則來建立這棵樹:
public
class
maxtree
}public
static node getmaxtreetree
(int
arr)
stack
stack =
newstack
<
>()
; hashmap
lbigmap =
newhashmap
<
>()
; hashmap
rbigmap =
newhashmap
<
>()
;for
(int i =
0; i < narr.length; i++
) stack.
push
(narr[i]);
}while
(!stack.
isempty()
)for
(int i = narr.length -
1; i >
0; i--
) stack.
push
(narr[i]);
}while
(!stack.
isempty()
) node head = null;
for(
int i =
0; i < narr.length; i++
)else
if(left == null)
else
}else
if(right == null)
else
}else
else}}
return head;
}public
static
void
popstacksetmap
(stack
stack, hashmap
map)
else
}}
棧和佇列 構造陣列的MaxTree
題目 定義二叉樹節點如下 class node def init self,value self.value value self.left none self.right none乙個陣列的maxtree定義如下 1 陣列中必須沒有重複元素 2 maxtree是一棵二叉樹,陣列的每乙個值對應乙個二...
九章演算法面試題42 構造MaxTree
給定乙個沒有重複元素的陣列a,定義a上的maxtree如下 maxtree的根節點為a中最大的數,根節點的左子樹為陣列中最大數左邊部分的maxtree,右子樹為陣列中最大數右邊部分的maxtree。請根據給定的陣列a,設計乙個演算法構造這個陣列的maxtree。如果能夠確定每個節點的父親節點,則可以...
D 構造陣列
題意 構造乙個長度為n的陣列a,構造方式如下 依次進行n次操作,第i次操作在陣列a的index i 位置處插入整數number i 最後從左到右輸出陣列a的元素題解 這道題從前向後考慮是不行的,我們從後向前考慮,最後乙個插入的數字置肯定是index n 然後倒二插入的位置可能是index n 1 或...