class SymmetricTreeDemo
{static void Main(){// 对称二叉树TreeNode root1 = new TreeNode(1){left = new TreeNode(2) { left = new TreeNode(3), right = new TreeNode(4) },right = new TreeNode(2) { left = new TreeNode(4), right = new TreeNode(3) }};// 非对称二叉树TreeNode root2 = new TreeNode(1){left = new TreeNode(2) { right = new TreeNode(3) },right = new TreeNode(2) { right = new TreeNode(3) }};Console.WriteLine("root1是否对称: " + IsSymmetric(root1)); // trueConsole.WriteLine("root2是否对称: " + IsSymmetric(root2)); // false}static bool IsSymmetric(TreeNode root){if (root == null) return true;return CheckSymmetric(root.left, root.right);}static bool CheckSymmetric(TreeNode left, TreeNode right){if (left == null && right == null) return true;if (left == null || right == null) return false;return left.val == right.val && CheckSymmetric(left.left, right.right)&& CheckSymmetric(left.right, right.left);}
}
实例5
class DepthDemo
{static void Main(){TreeNode root = new TreeNode(1){left = new TreeNode(2) { left = new TreeNode(4) },right = new TreeNode(3)};Console.WriteLine("最大深度: " + MaxDepth(root)); // 输出: 3}static int MaxDepth(TreeNode root){if (root == null) return 0;return Math.Max(MaxDepth(root.left), MaxDepth(root.right)) + 1;}
}
实例6
class PathSumDemo
{static void Main(){TreeNode root = new TreeNode(5){left = new TreeNode(4) { left = new TreeNode(11) { left = new TreeNode(7), right = new TreeNode(2) } },right = new TreeNode(8) { left = new TreeNode(13), right = new TreeNode(4) { right = new TreeNode(1) } }};Console.WriteLine("是否存在和为22的路径: " + HasPathSum(root, 22)); // true}static bool HasPathSum(TreeNode root, int targetSum){if (root == null) return false;if (root.left == null && root.right == null)return root.val == targetSum;return HasPathSum(root.left, targetSum - root.val) || HasPathSum(root.right, targetSum - root.val);}
}