654 最大二叉树
题目
https://leetcode.cn/problems/maximum-binary-tree/description/
我的想法
中序遍历递归,找到最大值然后作为根节点
题目分析
凡是构造二叉树的题目都用前序遍历 (中左右)
为先构造中间节点,然后递归构造左子树和右子树。
确定递归函数的参数和返回值
参数传入的是存放元素的数组,返回该数组构造的二叉树的头结点,返回类型是指向节点的指针。
1.确定终止条件
题目中说了输入的数组大小一定是大于等于1的,所以我们不用考虑小于1的情况,那么当递归遍历的时候,如果传入的数组大小为1,说明遍历到了叶子节点了。
那么应该定义一个新的节点,并把这个数组的数值赋给新的节点,然后返回这个节点。 这表示一个数组大小是1的时候,构造了一个新的节点,并返回。
TreeNode* node = new TreeNode(0);
if (nums.size() == 1) {
node->val = nums[0];
return node;
}
<