当前位置: 首页 > news >正文

投资网站建设优化排名推广关键词

投资网站建设,优化排名推广关键词,兰州传诚网络科技有限公司,adobe premiere原文地址:Level Order Tree Traversal 树的水平遍历就是广度优先遍历树。 上树的水平遍历顺序是:1 2 3 4 5。 方法1 (用函数打印指定的层) 算法:这个方法里面有两个基本的函数。一个是打印已知层的所有节点&#x…

原文地址:Level Order Tree Traversal

树的水平遍历就是广度优先遍历树。


这里写图片描述

上树的水平遍历顺序是:1 2 3 4 5。

方法1 (用函数打印指定的层)

算法:这个方法里面有两个基本的函数。一个是打印已知层的所有节点(printGivenLevel),另一个是打印树的水平顺序遍历(printLevelorder)。printLevelorder用printGivenLevel逐个从根部打印所有层的节点。

/*Function to print level order traversal of tree*/
printLevelorder(tree)
for d = 1 to height(tree)printGivenLevel(tree, d);/*Function to print all nodes at a given level*/
printGivenLevel(tree, level)
if tree is NULL then return;
if level is 1, thenprint(tree->data);
else if level greater than 1, thenprintGivenLevel(tree->left, level-1);printGivenLevel(tree->right, level-1);

实现:

// Recursive Java program for level order traversal of Binary Tree/* Class containing left and right child of current node and key value*/
class Node
{int data;Node left, right;public Node(int item){data = item;left = right = null;}
}class BinaryTree
{// Root of the Binary TreeNode root;public BinaryTree(){root = null;}/* function to print level order traversal of tree*/void printLevelOrder(){int h = height(root);int i;for (i=1; i<=h; i++)printGivenLevel(root, i);}/* Compute the "height" of a tree -- the number ofnodes along the longest path from the root nodedown to the farthest leaf node.*/int height(Node root){if (root == null)return 0;else{/* compute  height of each subtree */int lheight = height(root.left);int rheight = height(root.right);/* use the larger one */if (lheight > rheight)return(lheight+1);else return(rheight+1); }}/* Print nodes at the given level */void printGivenLevel (Node root ,int level){if (root == null)return;if (level == 1)System.out.print(root.data + " ");else if (level > 1){printGivenLevel(root.left, level-1);printGivenLevel(root.right, level-1);}}/* Driver program to test above functions */public static void main(String args[]){BinaryTree tree = new BinaryTree();tree.root= new Node(1);tree.root.left= new Node(2);tree.root.right= new Node(3);tree.root.left.left= new Node(4);tree.root.left.right= new Node(5);System.out.println("Level order traversal of binary tree is ");tree.printLevelOrder();}
}

输出:

Level order traversal of binary tree is - 
1 2 3 4 5 

最坏情况下的时间复杂度是:O(n^2) ,对于一个偏树(skewed tree),printGivenLevel()花费的时间是O(n),n在这里是偏树的节点数目。所以printLevelOrder()的时间复杂度是O(n) + O(n-1) + O(n-2) + .. + O(1),也就是O(n^2)

方法2:(用队列)

算法:

对于每一个节点,首先遍历这个节点,然后将这个节点的孩子节点推到一个FIFO的队列。

printLevelorder(tree)
1) Create an empty queue q
2) temp_node = root /*start from root*/
3) Loop while temp_node is not NULLa) print temp_node->data.b) Enqueue temp_node’s children (first left then right children) to qc) Dequeue a node from q and assign it’s value to temp_node

实现:

这里对上述算法做了一个简单的实现。队列是用数组实现的,它的最大尺寸是500。我们也可以用链表实现一个队列。

// Iterative Queue based Java program to do level order traversal
// of Binary Tree/* importing the inbuilt java classes required for the program */
import java.util.Queue;
import java.util.LinkedList;/* Class to represent Tree node */
class Node {int data;Node left, right;public Node(int item) {data = item;left = null;right = null;}
}/* Class to print Level Order Traversal */
class BinaryTree {Node root;/* Given a binary tree. Print its nodes in level orderusing array for implementing queue  */void printLevelOrder() {Queue<Node> queue = new LinkedList<Node>();queue.add(root);while (!queue.isEmpty()) {/* poll() removes the present head.For more information on poll() visit http://www.tutorialspoint.com/java/util/linkedlist_poll.htm */Node tempNode = queue.poll();System.out.print(tempNode.data + " ");/*Enqueue left child */if (tempNode.left != null) {queue.add(tempNode.left);}/*Enqueue right child */if (tempNode.right != null) {queue.add(tempNode.right);}}}public static void main(String args[]) {/* creating a binary tree and entering the nodes */BinaryTree tree_level = new BinaryTree();tree_level.root = new Node(1);tree_level.root.left = new Node(2);tree_level.root.right = new Node(3);tree_level.root.left.left = new Node(4);tree_level.root.left.right = new Node(5);System.out.println("Level order traversal of binary tree is - ");tree_level.printLevelOrder();}
}

输出:

Level order traversal of binary tree is - 
1 2 3 4 5 

时间复杂度:O(n),n在这里是二叉树的节点数。

http://www.lbrq.cn/news/2562355.html

相关文章:

  • 男做暧免费视频网站好的seo平台
  • 已有网站怎么修改网站seo优化外包顾问
  • 潍坊网站建设top长沙网站建设公司
  • 浏览器小游戏在线玩深圳网站搜索优化
  • 天津建设工程信息网网站首页seo教程网站优化推广排名
  • 行业网站功能赣州seo
  • wordpress 如何更改主页北京优化互联网公司
  • 钟表商城网站建设方案seo 视频
  • 网站建设公司如何约客户长沙网站关键词推广
  • 网站的优化总结怎么写进入百度知道首页
  • 好看又免费的图片素材seo哪个软件好
  • 梅州做网站设计公司北京seo公司wyhseo
  • wordpress建站优化日喀则网站seo
  • 今日上海新闻杭州seo
  • 图库下载网站源码长尾关键词举例
  • 没有文章更新的网站怎么做优化武汉seo首页优化报价
  • 网站开发合同范本长沙seo优化排名
  • 重庆高端网站建设信息流推广渠道有哪些
  • 莉莉卡是哪个网站做的刷外链网站
  • 定西市建设局官方网站今日刚刚发生的重大新闻
  • 网站备案每年一次北京搜索引擎优化seo专员
  • 广州电子商城网站建设莆田seo
  • 开发区建设集团网站sem推广托管公司
  • 上海网站设计制作公司网络营销推广方法
  • 长沙网站开发方案站长工具高清无吗
  • 郑州高端网站模板学做电商需要多少钱
  • 深圳网站建设公司排行榜seo博客大全
  • 建电子商城网站室内设计网站
  • 安徽营销型网站建设微信公众号怎么推广
  • 网页制作网站建设实战大全南京百度推广开户
  • WinForm之ListBox 控件
  • 小迪23-28~31-js简单回顾
  • 应用药品注册证识别技术,为医药行业的合规、高效与创新发展提供核心驱动力
  • 从零到英雄:掌握神经网络的完整指南
  • 【Kubernetes 指南】基础入门——Kubernetes 集群(二)
  • MongoDB系列教程-第四章:MongoDB Compass可视化和管理MongoDB数据库