树
发布于2021-01-18
上次编辑2021-04-19
二叉树
结构定义
| class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
|
| struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
|
二叉树的遍历
使用队列进行层序遍历。
先序遍历:父结点-->左孩子-->右孩子
中序遍历:左孩子-->父结点-->右孩子
后序遍历:左孩子-->右孩子-->父结点
递归的写法很简单。
非递归写法可以模拟递归写法的栈调用。
关于先序和后序,还有一种更简单的非递归写法。
平衡二叉树
在平衡二叉树中每个结点的左右两个子树的高度差的绝对值不超过 1。
平衡二叉树判断
翻转二叉树