二叉树

发布时间 2023-03-26 01:14:23作者: 是小宇呀

后继节点、前驱节点:都是按照中序来算的。

中序遍历:一般用递归做。

二叉搜索树与双向链表:使用中序递归做模板,先找到第一个节点,然后再分别给左右节点找下一个节点。实现方式如下:

Convert(pRootOfTree -> left);
        /*找到第一个节点,初始化head和pre*/
        if(pre == nullptr)
        {
            head = pRootOfTree;
            pre = pRootOfTree;
        }
        else {
            pre->right = pRootOfTree;
            pRootOfTree -> left = pre;
            pre = pRootOfTree;
        }
        Convert(pRootOfTree -> right);
 
对称的二叉树:可以根据递归来做。
终止条件是:树的左右孩子都是空,则返回true;当只有一个是空,或者左右孩子的值不一样时,返回false.
返回值:每一级将子问题是否匹配往上传递。
本级任务:根左右走左时根右左走右,根左右走右时根右左走左。
        return recursion(root1->left,root2->right)&&recursion(root2->left,root1->right);
或者把空节点补成1001,然后层序遍历。