LeetCode题目:1448. 统计二叉树中好节点的数目

题目

题目链接:https://leetcode-cn.com/problems/count-good-nodes-in-binary-tree/
题目解析:使用DFS搜索,带着之前最大的值搜索遍历二叉树。

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
			//记录好的结点,初始化为1是因为根节点都是好结点
	 		int res=1; 
	 		
		    public int goodNodes(TreeNode root) {
		    	//初始化根结点为最大值
		    	int max = root.val;
		    	//左子树遍历
		    	go(root.left,max);
		    	//右子树遍历
		    	go(root.right,max);
				return res;
		    }
		    //遍历函数
			private void go(TreeNode root, int max) {
				//如果结点为空则返回
				if(root==null)
					return;
                //System.out.println(root.val);
                //如果结点大于或等于之前的最大值    
				if(root.val>=max) {
					//好结点加1
					res=res+1;
					//则最大值为当前结点
					max = root.val;
                    //System.out.println("*");
				}
				//左子树遍历
				go(root.left,max);
				//右子树遍历
				go(root.right,max);
			}
}

你可能感兴趣的:(LeetCode,二叉树,leetcode,算法)