问题描述:
在二叉树中寻找值最大的节点并返回。
实现思路:
先利用前序遍历把二叉树的每个节点存放于动态数组中。然后对动态数组中的节点的值进行比较,返回值最大的节点。
实现代码:
vector<TreeNode*> v;
class Solution {
public:
/**
* @param root the root of binary tree
* @return the max node
*/
TreeNode* preorder(TreeNode* root)
{ if (root != NULL) {
v.push_back(root);
preorder(root->left);
preorder(root->right);
}
}
TreeNode* maxNode(TreeNode* root) {
// Write your code here
if (root == NULL) return NULL;
preorder(root);
int q= v[0]->val, p=0;
for (int i = 0; i < v.size(); i++) {
if (v[i]->val > q){
p= i;
q= v[i]->val;
}
}
return v[p];
}
};
感想:
这里的动态数组存放的是节点而不是节点的值,因为题目中要求的是要返回值最大的节点。for循环中不仅要改变结点的位置下标,还要改变q,让q等于当前值最大的节点。