阅读量:0
以下是用C#实现二叉树中路径和的计算方法:
using System; public class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode(int value = 0, TreeNode leftChild = null, TreeNode rightChild = null) { val = value; left = leftChild; right = rightChild; } } public class BinaryTree { public int PathSum(TreeNode root, int sum) { if (root == null) { return 0; } return PathSumFrom(root, sum) + PathSum(root.left, sum) + PathSum(root.right, sum); } private int PathSumFrom(TreeNode node, int sum) { if (node == null) { return 0; } int count = 0; if (node.val == sum) { count++; } count += PathSumFrom(node.left, sum - node.val); count += PathSumFrom(node.right, sum - node.val); return count; } } class Program { static void Main() { TreeNode root = new TreeNode(10); root.left = new TreeNode(5); root.right = new TreeNode(-3); root.left.left = new TreeNode(3); root.left.right = new TreeNode(2); root.right.right = new TreeNode(11); root.left.left.left = new TreeNode(3); root.left.left.right = new TreeNode(-2); root.left.right.right = new TreeNode(1); BinaryTree tree = new BinaryTree(); int sum = 8; int result = tree.PathSum(root, sum); Console.WriteLine("Number of paths with sum " + sum + ": " + result); } }
在上面的代码中,我们定义了一个TreeNode
类来表示二叉树中的节点,以及一个BinaryTree
类来计算二叉树中路径和等于给定值的路径数量。在BinaryTree
类中,我们使用递归的方法来遍历二叉树,并计算路径和等于给定值的路径数量。在Main
方法中,我们创建了一个二叉树,并计算路径和等于8的路径数量。