二叉树的最大节点

    xiaoxiao2021-04-12  41

    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的值。

    转载请注明原文地址: https://ju.6miu.com/read-667694.html

    最新回复(0)