1、问题描述
在二叉树中寻找值最大的节点并返回。 给出如下一棵二叉树: 1 / \ -5 2 / \ / \ 0 3 -4 -5 返回值为 3 的节点。
2、实现思路
从根节点开始前序遍历,与其左右子树结点值比较,a为遍历过的最大节点,a与接下来遍历的节点进行比较。
3、代码
class Solution { public: /** * @param root the root of binary tree * @return the max node */ TreeNode *a=new TreeNode; TreeNode* maxNode(TreeNode* root) { // Write your code here if (root==NULL) return NULL; a=root; compare(root,a); return a; } TreeNode* compare(TreeNode*root1, TreeNode*root2) { if(root1== NULL) return NULL; if(root1->val > a->val) a=root1; compare(root1->left, a); compare(root1->right, a); } }; 4、感想
a需要在函数外定义,作为全局变量,若放在TreeNode* maxNode(TreeNode* root)中,在 TreeNode* compare(TreeNode*root1, TreeNode*root2) 中无法用,若放在TreeNode* compare(TreeNode*root1, TreeNode*root2)中,则每次递归都会改变a的值。
