我准备开始一个新系列【LeetCode题解】,用来记录刷题,顺便复习一下数据结构与算法。
1. 二叉树
二叉树(binary tree)是一种极为普遍的数据结构,树的每一个节点最多只有两个节点——左孩子结点与右孩子结点。C实现的二叉树:
struct TreeNode {
int val;
struct TreeNode *left; // left child
struct TreeNode *right; // right child
};
DFS
DFS的思想非常朴素:根据结点的连接关系,依次访问每一个节点,直至遍历完整棵树。根据根节点的访问次序的不同——前、中、后,可分为先序、中序、后序遍历。先序遍历是指先访问根节点,再依次访问左孩子节点、右孩子节点。下图给出一个二叉树的先序、中序、后序遍历示例:
递归实现:递归调用,打印根节点。C实现如下:
// preorder binary tree traversal
void preorder(struct TreeNode *root) {
if(root) {
本文详细介绍了二叉树的先序、中序、后序递归和非递归遍历,以及层次遍历。通过具体LeetCode题目,如Same Tree、Symmetric Tree等,探讨了二叉树的各种操作,包括判断两棵树是否相同、是否对称、计算最大和最小深度、判断平衡、路径之和等。同时,提供了Java实现的代码示例。
订阅专栏 解锁全文
7601

被折叠的 条评论
为什么被折叠?



