如何用python构造一个n层的完全二叉树

2024-05-10 05:12

1. 如何用python构造一个n层的完全二叉树

用python构造一个n层的完全二叉树的代码如下:
typedef
struct
{int
weight;int
parent,
lchild,
rchild;
}
htnode
,*huffmantree;
//
动态分配数组存储huffman树
算法设计void
createhuffmantree(){
ht=(huffmantree)malloc(m+1)*sizeof(htnode.

如何用python构造一个n层的完全二叉树

2. 如何用C语言建立一棵N层的完全二叉树,要求除根结点,其余的结束左结点值为0,右结点值为1。求完全代码!

存储结构
  typedef struct {
int weight;
int parent, lchild, rchild; 
  } HTNode ,*HuffmanTree; // 动态分配数组存储huffman树
   算法设计
void createHuffmantree(){
  ht=(HuffmanTree)malloc(m+1)*sizeof(HTNode);// 动态分配数组存储huffman树,0号单元未用
// m:huffman 树中的结点数(m=2*n-1)
for (i=1;i<=m;++i)  
ht[i].parent= ht[i]->lch= ht[i]->rch=0; 
     for (i=1;i<=n;++i)  
ht[i].weight=w[i]; //初始化,w[i]:n个叶子的权值
     for (i=n+1;i<=m,++i) { //建哈夫曼树
       select(i-1),s1,s2);  //在ht[k](1<=k<=i-1)中选择两个双亲域为零而权值取最小的结点 :s1和s2
       ht[s1].parent= ht[s2].parent=i; 
       ht[i].lch=s1; 
ht[i].rch=s2;
       ht[i].weight=ht[s1].weight + ht[s2].weight ;   
};
}

3. 如何实现Python多叉树

class node:    def __init__(self, data):        self._data = data        self._children = []    def getdata(self):        return self._data    def getchildren(self):        return self._children    def add(self, node):        ##if full        if len(self._children) == 4:            return False        else:            self._children.append(node)    def go(self, data):        for child in self._children:            if child.getdata() == data:                return child        return Noneclass tree:    def __init__(self):        self._head = node('header')    def linktohead(self, node):        self._head.add(node)    def insert(self, path, data):        cur = self._head        for step in path:            if cur.go(step) == None:                return False            else:                cur = cur.go(step)        cur.add(node(data))        return True    def search(self, path):        cur = self._head        for step in path:            if cur.go(step) == None:                return None            else:                cur = cur.go(step)        return cur                        '''define node'''a = node('A')b = node('B')c = node('C')d = node('D')e = node('E')f = node('F')g = node('G')h = node('H')i = node('I')j = node('J')k = node('K')l = node('L')m = node('M')n = node('N')o = node('O')'''adding node to build true'''a.add(b)a.add(g)a.add(h)b.add(c)b.add(e)g.add(i)g.add(j)g.add(k)g.add(l)h.add(m)h.add(n)h.add(o)c.add(d)c.add(f)i.add(node(29))j.add(node(28))k.add(node(27))l.add(node(26))m.add(node(25))n.add(node(24))o.add(node(23))f.add(node(30))tree = tree()tree.linktohead(a)#testcaseprint 'Node',tree.search("ABE").getdata()print 'Node',tree.search("ABC").getdata()print 'Node',tree.search("AHM").getdata()tree.insert("ABCD", 1)for i in d.getchildren():    print 'value after', d.getdata(),' is ', i.getdata()

如何实现Python多叉树

4. n层的完全二叉树(堆)最多有几个元素C++数据结构

是2^n -1,这个因为   1+2+4+8+16+……+2^(n-1) = 2^n -1,不信你可以代几个数字进去试一下哦!
n levels 的意思是n层。
如果一棵树只有一个根结点,我们说它是1层,但深度是0.

5. 如何将嵌套的字典画成一个二叉树

用python构造一个n层的完全二叉树的代码如下:typedefstruct{intweig

如何将嵌套的字典画成一个二叉树

6. python二叉树算法

定义一颗二叉树,请看官自行想象其形状


class BinNode( ):
    def __init__( self, val ):
        self.lchild = None
        self.rchild = None
        self.value = val

binNode1 = BinNode( 1 )
binNode2 = BinNode( 2 )
binNode3 = BinNode( 3 )
binNode4 = BinNode( 4 )
binNode5 = BinNode( 5 )
binNode6 = BinNode( 6 )

binNode1.lchild = binNode2
binNode1.rchild = binNode3
binNode2.lchild = binNode4
binNode2.rchild = binNode5
binNode3.lchild = binNode6

7. 用java怎么构造一个二叉树?

二叉树的相关操作,包括创建,中序、先序、后序(递归和非递归),其中重点的是java在先序创建二叉树和后序非递归遍历的的实现。
package com.algorithm.tree;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Queue;
import java.util.Scanner;
import java.util.Stack;
import java.util.concurrent.LinkedBlockingQueue;


public class Tree {

	private Node root;
	
	public Tree() {
	}
	
	public Tree(Node root) {
		this.root = root;
	}
	
	//创建二叉树
	public void buildTree() {
		
		Scanner scn = null;
		try {
			scn = new Scanner(new File("input.txt"));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		root = createTree(root,scn);		
	}
	//先序遍历创建二叉树
	private Node createTree(Node node,Scanner scn) {
		
		String temp  = scn.next();
		
		if (temp.trim().equals("#")) {
			return null;
		} else {
			node = new Node((T)temp);
			node.setLeft(createTree(node.getLeft(), scn));
			node.setRight(createTree(node.getRight(), scn));
			return node;
		}
			
	}
	
	
	
	//中序遍历(递归)
	public void inOrderTraverse() {
		inOrderTraverse(root);
	}
	
	public void inOrderTraverse(Node node) {
		if (node != null) {
			inOrderTraverse(node.getLeft());
			System.out.println(node.getValue());
			inOrderTraverse(node.getRight());
		}
	}
	
	
	//中序遍历(非递归)
	public void nrInOrderTraverse() {
		
		Stack stack = new Stack();
		Node node = root;
		while (node != null || !stack.isEmpty()) {
			while (node != null) {
				stack.push(node);
				node = node.getLeft();
			}
			node = stack.pop();
			System.out.println(node.getValue());
			node = node.getRight();
			
		}
				
	}
	//先序遍历(递归)
	public void preOrderTraverse() {
		preOrderTraverse(root);
	}
	
	public void preOrderTraverse(Node node) {
		if (node != null) {
			System.out.println(node.getValue());
			preOrderTraverse(node.getLeft());
			preOrderTraverse(node.getRight());
		}
	}
	
	
	//先序遍历(非递归)
	public void nrPreOrderTraverse() {
		
		Stack stack = new Stack();
		Node node = root;
		
		while (node != null || !stack.isEmpty()) {
			
			while (node != null) {
				System.out.println(node.getValue());
				stack.push(node);
				node = node.getLeft();
			}
			node = stack.pop();
			node = node.getRight();
		}
				
	}
	
	//后序遍历(递归)
	public void postOrderTraverse() {
		postOrderTraverse(root);
	}
	
	public void postOrderTraverse(Node node) {
		if (node != null) {
			postOrderTraverse(node.getLeft());
			postOrderTraverse(node.getRight());
			System.out.println(node.getValue());
		}
	}
	
	//后续遍历(非递归)
	public void nrPostOrderTraverse() {
		
		Stack stack = new Stack();
		Node node = root;
		Node preNode = null;//表示最近一次访问的节点
		
		while (node != null || !stack.isEmpty()) {
			
			while (node != null) {
				stack.push(node);
				node = node.getLeft();
			}
			
			node = stack.peek();
			
			if (node.getRight() == null || node.getRight() == preNode) {
				System.out.println(node.getValue());
				node = stack.pop();
				preNode = node;
				node = null;
			} else {
				node = node.getRight();
			}
			
		}
		
		
		
		
	}
	
	//按层次遍历
	public void levelTraverse() {
		levelTraverse(root);
	}
	
	public void levelTraverse(Node node) {
	
		Queue queue = new LinkedBlockingQueue();
		queue.add(node);
		while (!queue.isEmpty()) {
			
			Node temp = queue.poll();
			if (temp != null) {
				System.out.println(temp.getValue());
				queue.add(temp.getLeft());
				queue.add(temp.getRight());
			}
						
		}
				
	}
	
	
	
	
}



//树的节点

class Node {
	
	private Node left;
	private Node right;
	private T value;
	
	public Node() {
	}
	public Node(Node left,Node right,T value) {
		this.left = left;
		this.right = right;
		this.value = value;
	}
	
	public Node(T value) {
		this(null,null,value);
	}
	public Node getLeft() {
		return left;
	}
	public void setLeft(Node left) {
		this.left = left;
	}
	public Node getRight() {
		return right;
	}
	public void setRight(Node right) {
		this.right = right;
	}
	public T getValue() {
		return value;
	}
	public void setValue(T value) {
		this.value = value;
	}
		
}
测试代码:
package com.algorithm.tree;

public class TreeTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Tree tree = new Tree();
		tree.buildTree();
		System.out.println("中序遍历");
		tree.inOrderTraverse();
		tree.nrInOrderTraverse();
		System.out.println("后续遍历");
		//tree.nrPostOrderTraverse();
		tree.postOrderTraverse();
		tree.nrPostOrderTraverse();
		System.out.println("先序遍历");
		tree.preOrderTraverse();
		tree.nrPreOrderTraverse();
		
//
	}

}

用java怎么构造一个二叉树?

8. python字典怎么表现二叉树

用python构造一个n层的完全二叉树的代码如下: typedef struct {int weight;int parent, lchild, rchild; } HTNode ,*HuffmanTree; // 动态分配数组存储huffman树 算法设计void createHuffmantree(){ ht=(HuffmanTree)malloc(m+1)*sizeof(HTNode.
最新文章
热门文章
推荐阅读