我准备开始一个新系列【LeetCode题解】,用来记录刷题,顺便复习一下数据结构与算法。
1. 二叉树
二叉树(binary tree)是一种极为普遍的数据结构,树的每一个节点最多只有两个节点——左孩子结点与右孩子结点。C实现的二叉树:
struct TreeNode {
int val;
struct TreeNode *left; // left child
struct TreeNode *right; // right child
};
DFS
DFS的思想非常朴素:根据结点的连接关系,依次访问每一个节点,直至遍历完整棵树。根据根节点的访问次序的不同——前、中、后,可分为先序、中序、后序遍历。先序遍历是指先访问根节点,再依次访问左孩子节点、右孩子节点。下图给出一个二叉树的先序、中序、后序遍历示例:
递归实现:递归调用,打印根节点。C实现如下: