
二叉树
外太空の神
这个作者很懒,什么都没留下…
展开
-
红黑树(算法导论第三版)
红黑树实现(C++模板实现)原创 2024-08-25 22:07:25 · 135 阅读 · 0 评论 -
给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1)
给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1)template<typename T>void insert_recursive(BinaryTree<T>& tree,BinaryTreeNode<T>* root, BinaryTreeNode<T>* node){ if(tree.root == nullptr) { tree.root = node; return;原创 2021-07-20 08:53:31 · 102 阅读 · 0 评论 -
二叉搜索树
二叉搜索树#ifndef C11LEARN_BINARYSEARCHTREE_H#define C11LEARN_BINARYSEARCHTREE_H#include "../chapter10/BinaryTreeNode.h"template<typename T>class BinarySearchTree{protected: BinaryTreeNode<T>* root; int size;public: BinarySearch原创 2021-07-19 21:49:51 · 297 阅读 · 0 评论 -
写出TREE-PREDECESSOR的伪代码(算法导论第三版12.2-3)
写出TRERE-PREDECESSOR的伪代码(算法导论第三版12.2-3)TREE-PREDECESSOR(x) if x.left != NIL return TREE-MAXIMUM(x.left) y = x.p while y != NIL and x == y.left x = y y = y.p return y下面是c++代码template<typename T>BinaryTreeNod原创 2021-07-18 20:02:35 · 309 阅读 · 0 评论 -
写出TREE-MINIMUM 和TREE-MAXIMUM的递归版本(算法导论第三版12.2-2)
写出TREE-MINIMUM 和TREE-MAXIMUM的递归版本(算法导论第三版12.2-2)template<typename T>BinaryTreeNode<T>* tree_minimum_recursion(BinaryTreeNode<T>* node){ if(node == nullptr) return node; if(node->left != nullptr) return tree_minimum_r原创 2021-07-18 19:56:38 · 191 阅读 · 0 评论 -
二叉树的中序遍历非递归方法(算法导论第三版12.1-3)
二叉树的中序遍历非递归方法(算法导论第三版12.1-3)1⃣️用栈实现template<typename T>void inorder_tree_walk_non_recursion_by_stack(BinaryTreeNode<T> *node){ Stack<BinaryTreeNode<T>*> stack; stack.push(node); while (!stack.empty()) { B原创 2021-07-18 15:11:43 · 98 阅读 · 0 评论 -
二叉树的遍历(算法导论第三版12.1-4)(包含先序遍历,后序遍历和中序遍历)
二叉树的遍历(算法导论第三版12.1-4)1⃣️先序遍历template<typename T>void preorder_tree_wald(BinaryTreeNode<T> *node){ if(node!= nullptr) { std::cout<<node->key<<" "; preorder_tree_wald(node->left); preorder_tre原创 2021-07-18 15:06:21 · 92 阅读 · 0 评论 -
辅助类BinaryTreeNodeLeftChildRightSibling(左孩子右兄弟,二叉树结点)
辅助类BinaryTreeNodeLeftChildRightSibling(左孩子右兄弟,二叉树结点)template<typename T>class BinaryTreeNodeLeftChildRightSibling{public: T key; BinaryTreeNodeLeftChildRightSibling<T>* parent; BinaryTreeNodeLeftChildRightSibling<T>* left_原创 2021-07-14 10:20:09 · 247 阅读 · 0 评论 -
非递归遍历二叉树(算法导论第三版第十章10.4-5)
非递归遍历二叉树(算法导论第三版第十章10.4-5)template<typename T>void TraverseBinaryTreeNonRecursive(BinaryTreeNode<T>* root){ BinaryTreeNode<T>* prev = nullptr; BinaryTreeNode<T>* current = root; while (current!= nullptr) {原创 2021-07-14 10:16:26 · 125 阅读 · 0 评论 -
给定一个n节点二叉树,写出一个O(n)时间的非递归的过程,将该树每个结点的关键字输出(算法导论第三版第十章10.4-5)
给定一个n节点二叉树,写出一个O(n)时间的非递归的过程,将该树每个结点的关键字输出。要求除该树本树的存储空间外只能使用固定量的额外存储空间,且过程中不得修改该树,即使是暂时的修改也不允许。(算法导论第三版第十章10.4-5)template<typename T>void TraverseBinaryTreeNonRecursive(const BinaryTreeNodeIndex<T>* array,int index){ int prev = -1;原创 2021-07-14 09:56:30 · 155 阅读 · 0 评论 -
辅助类BinaryTreeNode(二叉树节点)
辅助类BinaryTreeNode(二叉树节点)template<typename T>class BinaryTreeNode{public: T key; BinaryTreeNode<T>* parent; BinaryTreeNode<T>* left; BinaryTreeNode<T>* right;public: BinaryTreeNode(){} BinaryTreeNode(T k原创 2021-07-13 21:53:13 · 692 阅读 · 0 评论 -
给定一个n节点的二叉树,写出一个O(n)时间非递归过程,将该树每个节点关键字输出,可以使用一个栈作为辅助数据结构(算法导论第十章10.4-3)
给定一个n节点的二叉树,写出一个O(n)时间非递归过程,将该树每个节点关键字输出,可以使用一个栈作为辅助数据结构(算法导论第十章10.4-3)template<typename T>void TraverseBinaryTreeByStack(const BinaryTreeNode<T>* array,const BinaryTreeNode<T>& root){ Stack<BinaryTreeNode<T>> stac原创 2021-07-13 20:34:44 · 147 阅读 · 0 评论 -
给定一个n节点的二叉树,写出一个O(n)时间递归过程,将该树每个节点关键字输出(算法导论第十章10.4-2)
给定一个n节点的二叉树,写出一个O(n)时间递归过程,将该树每个节点关键字输出(算法导论第十章10.4-2)#include <iostream>template<typename T>class BinaryTreeNode{public: T key; int left; int right;public: BinaryTreeNode(){} BinaryTreeNode(const T key,int left = -1,原创 2021-07-13 20:30:21 · 165 阅读 · 0 评论