package 二叉樹子樹的刪除;
public class binarytree
public treenode getroot()
//前序
public void frontshow()
else
}//中序
public void midshow()
else
}//後序
public void aftershow()
else
}//前序查詢
public treenode frontsearch(int i)
public void delete(int i) else
}public static void main(string args)
}class treenode
//前序查詢
public treenode frontsearch(int i) else
//如果不為空,則查詢成功
if(target!=null)
//查詢右節點
if(rightnode!=null)
}return target;
}//前序遍歷(根,左,右)
public void frontshow()
//右節點
if(rightnode!=null)
}//中序遍歷(左,根,右)
public void midshow()
//在遍歷當前節點(根節點);
system.out.print(value);
//最後右節點
if(rightnode!=null)
}//後序遍歷(左,右,根)
public void aftershow()
//在右節點
if(rightnode!=null)
//最後遍歷當前節點(根節點);
system.out.print(value);
}//刪除二叉樹的子樹
public void delete(int i)
//判斷右孩子
if(parent.rightnode!=null&&parent.rightnode.value==i)
//如果都不是,遞迴檢查並刪除左孩子
parent=leftnode;
if(parent!=null)
//遞迴檢查並刪除右孩子
parent=rightnode;
if(parent!=null)
}//設定左孩子
public void setleftnode(treenode lnode)
//設定右孩子
public void setrightnode(treenode rnode)
}此二叉樹為空 ;
二叉樹和最大的子樹
問題描述 給乙個二叉樹,每個節點都是正或負整數,如何找到乙個子樹,它所有節點的和最大?思路 採用自底向上的計算。先計算左右子樹總和值,用左右子樹的總和加上當前節點值,如果當前總和大於最大值,則更新最大值,同時將最大子樹根節點更新為當前根。簡單說,就是後序遍歷。cpp view plain copy ...
二叉樹的子樹 解題報告
time limit 3000ms memory limit 65536k description 如上圖所示,由正整數1,2,3 組成了一顆二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後...
二叉樹 判斷二叉樹是否另一棵二叉樹的子樹
給定兩個二叉樹s和t,判斷t是否為s的子樹。方法一 進行對比時,s不是從根節點開始的,而t是從根節點開始的,因此,可以先計算t的高度,然後在s中找出所有高度和t相同的子樹,然後對比它們是否相同即可。class solution return false public int height treen...