LintCode(632)查找二叉树中值最大的节点

问题

Find the maximum node in a binary tree, return the node.

Example

Given a binary tree:

     1
   /   \
 -5     2
 / \   /  \
0   3 -4  -5 

return the node with value 3.

考虑遍历二叉树来解决

java解答

/**
 * Definition of TreeNode:
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left, right;
 *     public TreeNode(int val) {
 *         this.val = val;
 *         this.left = this.right = null;
 *     }
 * }
 */
public class Solution {
    /*
     * @param root: the root of tree
     * @return: the max node
     */
     /**
      * 思路
      * 1,参数合法性判断
      * 2,遍历二叉树,找出最大节点
      */
    public TreeNode maxNode(TreeNode root) {
        // write your code here
        if(root == null){
            return null;
        }
        //最大的节点
        TreeNode maxNode = root;
        //当前节点
        TreeNode p = root;
        //临时存放二叉树的链表集合
        LinkedList<TreeNode> nodeLink = new LinkedList<TreeNode>();
        while(p != null || !nodeLink.isEmpty()){
            if(p != null){
                nodeLink.push(p);
                p = p.left;
            }else{
                p = nodeLink.pop();
                if(maxNode.val < p.val){
                    maxNode = p;
                }
                p = p.right;
            }
        }
        return maxNode;
    }
}

 

    原文作者:二叉查找树
    原文地址: https://blog.csdn.net/xingzhishen/article/details/83316699
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞