題目描述:
給定乙個不含重複元素的整數陣列。乙個以此陣列構建的最大二叉樹定義如下:
二叉樹的根是陣列中的最大元素。
左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。
右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。
通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。
示例 :
給定的陣列的大小在 [1, 1000] 之間。
方法1:
主要思路:
(1)使用遞迴建立樹結構,每次在陣列中找出給定範圍內的最大值,使用該最大值建立當前根節點,再以該節點左邊的結點建立其左子樹,該結點右邊的結點建立其右子樹,最後返回根節點即可;
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
//找出當前範圍內的最大值的位置
int max_index=left;
for(
int i=left+
1;i<=right;
++i)
}//以最大值建立當前根節點
treenode* root=
newtreenode
(nums[max_index]);
//以最大值左右兩邊的各自範圍內的值,建立左右子樹
root-
>left=
dfs(nums,left,max_index-1)
; root-
>right=
dfs(nums,max_index+
1,right)
;//返回根節點
return root;
} treenode*
constructmaximumbinarytree
(vector<
int>
& nums)
};
654 最大二叉樹
給定乙個不含重複元素的整數陣列。乙個以此陣列構建的最大二叉樹定義如下 二叉樹的根是陣列中的最大元素。左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。example 1 輸入 3,2,1,6,...
654 最大二叉樹
給定乙個不含重複元素的整數陣列 nums 乙個以此陣列直接遞迴構建的 最大二叉樹 定義如下 二叉樹的根是陣列 nums 中的最大元素。左子樹是通過陣列中 最大值左邊部分 遞迴構造出的最大二叉樹。右子樹是通過陣列中 最大值右邊部分 遞迴構造出的最大二叉樹。返回有給定陣列 nums 構建的 最大二叉樹 ...
654 最大二叉樹
給定乙個不含重複元素的整數陣列。乙個以此陣列構建的最大二叉樹定義如下 二叉樹的根是陣列中的最大元素。左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。示例 輸入 3,2,1,6,0,5 輸出 ...