Categories


Tags


整合查找

  整合查找

整理自网络ChatGPT产生之内容,文本内容不具备参考意义,程序内容及代码片段有且仅有借鉴意义。

  )
 */
public class AVL_Tree {

	private static class Node {
		int key;
		int balance;// 平衡因子
		int height;// 高度
		Node left;
		Node right;

		Node(int k) {
			key = k;
			balance = 0;
			height = 1;
			left = right = null;
		}
	}

	// 根节点
	private Node root;

	public AVL_Tree() {
		root = null;
	}

	public Node GetRoot() {
		return root;
	}

	public static int Height(Node node) {
		if (node == null)
			return 0;
		else
			return node.height;
	}

	public static int Balance(Node node) {
		if (node == null)
			return 0;
		return Height(node.left) - Height(node.right);
	}

	// 前序遍历
	public void PreOrderTraversal(Node node) {
		if (node == null)
			return;
		System.out.print(node.key + " ");
		PreOrderTraversal(node.left);
		PreOrderTraversal(node.right);
	}

	// 中序遍历
	public void InOrderTraversal(Node node) {
		if (node == null)
			return;
		InOrderTraversal(node.left);
		System.out.print(node.key + " ");
		InOrderTraversal(node.right);
	}

	// 后序遍历
	public void PostOrderTraversal(Node node) {
		if (node == null)
			return;
		PostOrderTraversal(node.left);
		PostOrderTraversal(node.right);
		System.out.print(node.key + " ");
	}

	// 左旋
	public Node LeftRotation(Node x) {
		Node y = x.right; //得到y
		Node T2 = y.left; 

		x.right = T2; 
		y.left = x; 

		//更新高度
		x.height = Math.max(Height(x.left), Height(x.right)) + 1;
		y.height = Math.max(Height(y.left), Height(y.right)) + 1;
		return y; 
	}

	// 右旋
	public Node RighRotation(Node y) {
		Node x = y.left;
		Node T2 = x.right;

		x.right = y;
		y.left = T2;

		// 更新高度
		y.height = Math.max(Height(y.left), Height(y.right)) + 1;
		x.height = Math.max(Height(x.left), Height(x.right)) + 1;
		return x;
	}

	// 插入
	public void Insert(int x) {
		root = Insert(root, x);
	}

	public Node Insert(Node node, int k) {
		if (node == null) {
			node = new Node(k);
			return node;
		}

		if (node.key > k) {
			node.left = Insert(node.left, k); //递归插入左子树
		} else if (node.key < k) {
			node.right = Insert(node.right, k); //递归插入右子树
		} else //如果相等说明这个值已经存在
			return node;

		//更新高度
		node.height = 1 + Math.max(Height(node.left), Height(node.right));

		//更新平衡因子
		int balance = Balance(node);

		/*
		 * 情况 1:LL
		 */
		// 如果情况为LL,进行右旋转
		if (balance > 1 && k < node.left.key) {
			return RighRotation(node);
		}

		/*
		 * 情况 2:RR
		 */
		// 如果情况为RR,进行右旋转
		if (balance < -1 && k > node.right.key) {
			return LeftRotation(node);
		}

		/*
		 * 情况 3:LR
		 */
		// 如果情况为LR,先进行左旋转再右旋转
		if (balance > 1 && k > node.left.key) {
			node.left = LeftRotation(node.left);
			return RighRotation(node);
		}

		/*
		 * 情况 4:RL
		 */
		// 如果情况为RL, 先进行右旋转再左旋转
		if (balance < -1 && k < node.right.key) {
			node.right = RighRotation(node.right);
			return LeftRotation(node);
		}
		return node;

	}
	
	
	//删除
    public void Delete(int key) {
        root = deleteNode(root, key);
    }

    private  Node deleteNode(Node node, int key) {
        if (node == null)
            return null;
        // 如果key小于节点的key,继续处理左子树
        if (node.key > key) {
            node.left = deleteNode(node.left, key);
            // 检查平衡
            return checkBalance(node);
        }
        // 如果key大于节点的key,继续处理右子树
        else if (node.key < key) {
            node.right = deleteNode(node.right, key);
            // 检查平衡
            return checkBalance(node);
        }
        // 如果key等于节点的key,即找到要删除的节点
        else {
            if (node.left == null)
                return node.right;
            else if (node.right == null)
                return node.left;
            else {
                if (Height(node.left) > Height(node.right)) { 
                    // 如果node的左子树比右子树矮,就找到node的左子树中的最大值
                    int min = maxNodeValue(node.left); // 找到node的左子树中的最大值
                    node.key = min; // 用node的左子树中的最大值替换node的key
                    node.left = deleteNode(node.left,min); // 删除node的左子树中的最大值
                } else {
                    // 如果node的左子树比右子树高,就找到node的右子树中的最小值
                    int max = minNode

Public @ 2023-02-24 05:48:02 整理自网络ChatGPT产生之内容,文本内容不具备参考意义,程序内容有且仅有借鉴意义。

相关性排名(relevanceranking)

一种技能,被查找引擎运用拣选匹配,来发作一系列的天然查找成果,这些最高的匹配成果与查找恳求的相关性最挨近,决议详细相关性排名是怎样履行的软件代码被称为排名算法,而且这些算法对每个查找引擎而言是其商业秘密,相关性排名算法运用许多种要素,包含匹配查找恳求内容所在网页的方位,网页的权威性(依据链接剖析),查找恳求中的词语在网页上互相的挨近程度,以及更多其他的。

Public @ 2012-09-29 15:51:38

排名要素(rankingchecker)

排名要素是指影响网站在搜索引擎结果页面(SERP)中排名的因素,通常被优化师用作SEO策略的基础。这些因素可以分为两类:内部因素和外部因素。 内部因素包括网站结构、页面标题、META标记、URL结构、网页内容、关键词密度、图片和视频标记、网站速度、内部链接和参考。 外部因素包括外部链接的数量和质量、社交媒体影响、在线目录和贴吧、客户评论和反馈、新闻、事件和广告,并且还有搜索引擎的基本数据。

Public @ 2023-05-27 04:00:13

更多您感兴趣的搜索

0.429465s