題目1: 654. 最大二叉樹
算法思路:
設(shè)計(jì)輔助函數(shù)構(gòu)建所需要的二叉樹但校,聲明如下:
//對nums[left, right)構(gòu)建二叉樹
TreeNode* constructMaximumBinaryTree(vector<int>& nums, int left, int right)
然后從當(dāng)前vector中得到其最大元素索引值構(gòu)建根結(jié)點(diǎn)事镣,左子樹和右子樹分別遞歸對left到最大索引之間驳规、最大索引值+1到right之間構(gòu)建孩等。然后在原函數(shù)中調(diào)用輔助函數(shù)即可艾君。
題目2:617. 合并二叉樹
算法思路:
1)如果兩個(gè)二叉樹都為空,返回nullptr
2)如果root1為空肄方,直接返回root2
3)如果root2為空冰垄,直接返回root1
4) 由兩個(gè)根結(jié)點(diǎn)的和構(gòu)造一個(gè)新結(jié)點(diǎn),然后兩個(gè)二叉樹的左右子樹分別遞歸調(diào)用即可权她。
題目3:700. 二叉搜索樹中的搜索
算法思路:
1)如果二叉搜索樹為空虹茶,直接返回nullptr
2)如果val小于根結(jié)點(diǎn)的值,那么從左子樹遞歸搜索
3)如果val大于根結(jié)點(diǎn)的值隅要,那么從右子樹遞歸搜索
4)否則返回根結(jié)點(diǎn)蝴罪。
題目4: 98. 驗(yàn)證二叉搜索樹
算法思路:
中序遍歷得到所有結(jié)點(diǎn)的值存儲到vector<int>中。如果此vector有序拾徙,則為平衡二叉樹洲炊,否則不是平衡二叉樹。